是否可以使用配置文件创建.sh
shell 或文件?.command
我需要通过终端备份网站并能够将一些数据放入配置文件,并让 shell 执行它。
例如用户名、密码、ssh id 等等。
#!/bin/bash
ssh [email protected] "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"
ssh [email protected] "mysqldump -u user_admin -ppass database_1 > databasebackup-`date +%Y%m%d`-db.sql"
scp [email protected]:webfilesbackup-date-`date +%Y%m%d`.tar.bz2 ~/backup/
scp [email protected]:databasebackup-`date +%Y%m%d`-db.sql ~/backup/
ssh [email protected] "rm -f webfilesbackup-date-`date +%Y%m%d`.tar.bz2"
ssh [email protected] "rm -f databasebackup-`date +%Y%m%d`-db.sql"
答案1
创建一个文件(例如settings
),并将其设置作为变量:
username='foo'
pass='bar'
website='baz'
database='yak'
然后从脚本中获取文件,您将能够访问变量:
. settings
echo $username # <- this will print "foo"
关于你的第二个“问题”,如果你有多个主机,那么你可以有多个配置文件,并将作为参数传递给脚本的文件作为源。例如,创建一个名为的配置文件site1
。
使用以下方式调用脚本./backup.sh site1
. $1 # <- this will load the file "site1"
echo $username # <- this will print "foo"
使用您的备份脚本,这意味着:
#!/bin/bash
. $1
ssh [email protected] "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"
ssh [email protected] "mysqldump -u $user -p$pass $database > databasebackup-`date +%Y%m%d`-db.sql"
# ... and so on
答案2
另一个选择是创建一个文本文件并使用 while 循环逐行访问该文件。
答案3
mkdir -p Example.app/Contents/MacOS`
cp script.sh Example.app/Contents/MacOS/Example
...这样就可以了。 本文有更详细的说明,包括如何获取自定义图标。
您可能还会考虑使用 Automator 或 AppleScript Studio 来构建可以正常运行的应用程序,而无需手动操作。
答案4
# parse the ini like $0.hostname.conf and set the variables
# place a $0.`hostname -s`.conf file in the same dir as your script
# set here any VarName=VarValue
# use ; for comments - you will get host independant conf file
# for your bash scripts - [examle usage :][1]
doParseIniFile(){
eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
-e 's/;.*$//' \
-e 's/[[:space:]]*$//' \
-e 's/^[[:space:]]*//' \
-e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
< $IniFile \
| sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
}
#eof function doParseIniFile