Bash: 予期しないトークン `)' の近くで構文エラーが発生しています

Bash: 予期しないトークン `)' の近くで構文エラーが発生しています

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

例えば:

config.conf

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

あなたは安全であるはずです。

関連情報