我有运行正常的命令-
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';"'
感谢您的帮助!
答案 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设计为处理必须嵌套在其他单引号内的单引号的方式。