設定ファイルに保存されている情報を使用するシェルスクリプトを作成しました。私が経験している問題は、シェルスクリプトで使用するために設定ファイルに格納されている特定の値を渡そうとすると構文エラーが発生することです。
たとえば、
構成ファイル
host=localhost
user=user
password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4= (not my real password)
db_name=database
スクリプトファイル
# Load config file TODO: make this more secure
source /path/to/config.conf
# MySQL database dump
mysqldump --lock-tables -h $host -u $user -p $password $db_name > dbbackup_`date +"%Y%m%d"`.bak
スクリプトを実行しようとすると、次のことが発生します。
$ bash script.sh
Syntax error near unexpected token `)'
`password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4='
この問題は、ランダムに生成されたパスワードに使用される特定の文字に関連しているようです。私は$password
引用符を使ってみましたが、それがうまくいかなかったときに設定ファイルに保存されている実際のパスワードで同じことをしましたが、再び成功しませんでした。
この問題を解決するための最良の方法は何ですか?
答え1
できるだけ頻繁に二重引用符を使用してください。
config.confは次のようになります
host="localhost"
user="user"
password="GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4="
db_name="database"
そしてあなたの命令は次のとおりです。
mysqldump --lock-tables -h "${host}" -u "${user}" -p"${password}" "${db_name}" > dbbackup_`date +"%Y%m%d"`.bak
あなたは安全でなければなりません。