我有一个bash脚本:

databases=`mysql -h$DBHOST -u$DBUSER -p$DBPASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

问题是当密码包含所有可能的字符时。在这种情况下,我如何逃出$DBPASSWORD?如果我有带'!'的密码考虑到命令在反勾号内。我没有bash脚本的经验,但是我尝试过"$DBPASSWORD"'$DBPASSWORD'但都没有成功。谢谢你
稍后编辑:此处链接到脚本,第170行->https://github.com/Ardakilic/backmeup/blob/master/backmeup.sh

最佳答案

首先:answer from @bishop是spot-on:不要在命令行上传递密码。
第二:对所有shell扩展使用双引号。所有人。总是。

databases=$(mysql -h"$DBHOST" -u"$DBUSER" -p"$DBPASSWORD" -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)

关于linux - bash转义感叹号字符,带有反引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42628841/

10-11 17:14