Shell
Bash:意外標記’)‘附近的語法錯誤
我創建了一個使用儲存在配置文件中的資訊的 shell 腳本。我面臨的問題是,當我嘗試傳遞儲存在配置文件中的某些值以供 shell 腳本使用時,出現語法錯誤。
例如:
配置文件
host=localhost user=user password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4= (not my real password) db_name=database
script.sh
# 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
用引號括起來,當它不起作用時,我對儲存在配置文件中的實際密碼做了同樣的事情,但我還是沒有成功。解決這個問題的最佳方法是什麼?
盡可能多地使用雙引號。
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
你應該是安全的。