我一直在阅读这里已经问过的很多问题,但是,某种原因对我来说毫无用处。我有一个bash脚本,我必须在该脚本中发送密码,该密码将数据库转储到远程计算机上,因此它类似于:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database | gzip -c > my_database.sql.gz
现在,该密码具有各种特殊字符:
#8111*@uu(
如果我直接在单引号内使用密码运行以上命令,则它可以工作:即。
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database | gzip -c > my_database.sql.gz
如果没有单引号,则结尾的(()会出错。
我还尝试过这样的密码转义字符:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database | gzip -c > my_database.sql.gz
然后,它给出访问被拒绝的错误。
我也尝试使用“源”即。将密码另存为:
文件pass.cre
MYPASSWORD='#8111*@uu('
然后在bash脚本中包含该文件:
!/bin/sh
source pass.cre
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p$MYPASSWORD my_database | gzip -c > my_database.sql.gz
它似乎正在从文件中读取$ MYPASSWORD,然后再次出现无效字符错误。
有什么建议我想念的吗?