【发布时间】:2016-07-08 05:29:39
【问题描述】:
我正在通过 SSH 在屏幕上执行一些命令。这非常有效:
ssh myuser@mydomain.com "screen -list; screen -r -d -X -S myscreen stuff $'echo here\n'"
但现在我尝试运行包含双引号的 sed 命令,而不是 echo。
sed -i -r "s/( host: )(\w+)/\1test/" file.yml
双引号导致 bash: syntax error near unexpected token `database_name:'
如何正确转义 sed 所需的双引号?
【问题讨论】:
-
为什么需要双引号?这应该与您的 sed 命令周围的单引号一起使用。您没有任何想要扩展的内容。
-
单引号会干扰 stuff 命令周围的单引号。我正在尝试用 sed 命令替换此处的 echo。
-
您可以使用
'\''在其他单引号内“引用”单引号。 -
尝试将此处文档中的远程命令提供给
ssh,而不是作为引用的命令行参数。它将为您节省一定程度的报价。
标签: bash sed scripting automation