Bash:意外標記“)”附近出現語法錯誤

Bash:意外標記“)”附近出現語法錯誤

我創建了一個 shell 腳本,它使用設定檔中儲存的資訊。我面臨的問題是,當我嘗試傳遞設定檔中儲存的某些值以供 shell 腳本使用時,出現語法錯誤。

例如:

設定檔

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

你應該很安全。

相關內容