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

你应该很安全。

相关内容