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

带引号的Linux bash命令-内引号-内引号,linux,bash,Linux,Bash,我有一个运行良好的命令- mysql-p$DB_PW-u ops--host=“$DB_ENDPOINT”-e”从users.webserver中删除,其中ipaddress='$PRIVATE_IP';” 我想用不同的用户运行它,所以我必须将命令放在单引号内,但现在它可以工作了- sudo-H-u ernie bash-c'mysql-p$DB_PW-u ops--host=“$DB_ENDPOINT”-e”从users.webserver中删除,其中ipaddress='$PRIVATE_I

我有一个运行良好的命令-
mysql-p$DB_PW-u ops--host=“$DB_ENDPOINT”-e”从users.webserver中删除,其中ipaddress='$PRIVATE_IP';”

我想用不同的用户运行它,所以我必须将命令放在单引号内,但现在它可以工作了-

sudo-H-u ernie bash-c'mysql-p$DB_PW-u ops--host=“$DB_ENDPOINT”-e”从users.webserver中删除,其中ipaddress='$PRIVATE_IP';“


感谢您的帮助

第二层引号(
)嵌套在
引号中不会有问题。必须转义嵌套最深的层。若要转义单引号,请使用

'\''
而不是


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

您不需要运行
bash
sudo
将运行de>mysql很好

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

请注意,存在SQL注入攻击的风险;在执行此命令之前,请确保您知道
PRIVATE_IP
的值。

观察:
a=1;echo“$a”和
a=1;sudo bash-c'echo”$a“
这则小新闻让一切都变得有意义。谢谢@ErnieVanDuyne,如果你满意地解决了问题,你可以考虑接受其中一个答案。您可以通过单击投票按钮下的灰色复选标记来执行此操作。您可能还应该回去对以前提出的问题执行此操作。你这样做会得到一些代表,它会让其他人知道你的问题已经得到了回答,他们不需要花时间来决定是否需要更多的帮助。