Bash:予期しないマーカー「)」の近くに構文エラーがあります。

Bash:予期しないマーカー「)」の近くに構文エラーがあります。

設定ファイルに保存されている情報を使用するシェルスクリプトを作成しました。私が経験している問題は、シェルスクリプトで使用するために設定ファイルに格納されている特定の値を渡そうとすると構文エラーが発生することです。

たとえば、

構成ファイル

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

あなたは安全でなければなりません。

関連情報