带引号的Linux bash命令-内部引号-内部引号

时间:2019-04-29 16:09:32

标签: linux bash

我有运行正常的命令- mysql -p$DB_PW -u ops --host="$DB_ENDPOINT" -e "delete from users.webservers where ipaddress='$PRIVATE_IP';"

我想用其他用户运行它,所以我必须将命令放在单引号内,但现在可以使用-

sudo -H -u ernie bash -c 'mysql -p$DB_PW -u ops --host="$DB_ENDPOINT" -e "delete from users.webservers where ipaddress='$PRIVATE_IP';"'

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您不需要运行where datecol >= timestampadd(SQL_TSI_DAY, -30, current_date()) bash将运行sudo很好。

mysql

请注意,存在SQL注入攻击的风险;在执行此命令之前,请确保您知道sudo -H -u ernie \ mysql -p"$DB_PW" \ -u ops \ --host="$DB_ENDPOINT" \ -e "delete from users.webservers where ipaddress='$PRIVATE_IP';" 的值。

答案 1 :(得分:2)

第二层引号(")嵌套在'引号内不会有问题。您最嵌套的图层必须转义。要转义单引号,请使用

'\''

代替'

从技术上讲,这不是在转义单引号,而是结束上一个引用的部分,编写文字',然后开始一个新的引用部分。这就是bash设计为处理必须嵌套在其他单引号内的单引号的方式。