![シェルスクリプト用の設定ファイルを作成できますか?](https://rvso.com/image/1303487/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E7%94%A8%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
設定ファイルを使用して.sh
シェルまたはファイルを作成することは可能ですか?.command
ターミナル経由で Web サイトをバックアップし、構成ファイルにいくつかのデータを入れて、シェルで実行できるようにする必要があります。
たとえば、ユーザー名、パスワード、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"
2 番目の「質問」に関してですが、複数のホストがある場合は、複数の構成ファイルを用意して、そのうちの 1 つをスクリプトに引数として渡すだけで済みます。たとえば、 という構成ファイルを作成します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
もう 1 つのオプションは、テキスト ファイルを作成し、while ループを使用してそのファイルに 1 行ずつアクセスすることです。
答え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