【发布时间】:2021-09-17 13:47:41
【问题描述】:
通常我可以在我的服务器中以以下方式通过命令行运行命令来运行 sql 脚本:
[ec2-user@ip-XX-XX-XX-XXX ~]$ sudo mysql -h BLAHBLAHBLAH.us-east-1.rds.amazonaws.com -u user -p'aaaaa:b>c[d{e]ff=|ggggggggg^$*' adi_chf_db < ./test.sql
所以我想让这个简单,并让一个 bash 脚本为我运行它:
#!/bin/bash
sql_cmd_to_run="sudo mysql -h BLAHBLAHBLAH.us-east-1.rds.amazonaws.com -u user -p\'aaaaa:b>c[d{e]ff=|ggggggggg^$*\' test_database < ./test.sql"
ssh -t test_server "${sql_cmd_to_run}"
我的结果如下:
bash: ggggggggg^': command not found
ERROR 1045 (28000): Access denied for user 'user'@'XX.XX.XX.XXX' (using password: YES)
Connection to XX.XX.XX.XXX closed.
我也知道 bash 中有一些特殊字符,所以我也尝试了以下方法(通过将 \ 放在特殊字符之前):
#!/bin/bash
sql_cmd_to_run="sudo mysql -h BLAHBLAHBLAH.us-east-1.rds.amazonaws.com -u user -p\'aaaaa:b\>c\[d\{e\]ff=\|ggggggggg\^$\*\' test_database < ./test.sql"
ssh -t test_server "${sql_cmd_to_run}"
输出是什么:
ERROR 1045 (28000): Access denied for user 'user'@'XX.XX.XX.XXX' (using password: YES)
Connection to XX.XX.XX.XXX closed.
(显然出于某些安全原因,我隐藏了一些值。)
【问题讨论】:
-
请不要标记垃圾邮件。它将您的问题插入到不属于它的搜索结果中。