如何通过ssh命令行转义引号以远程执行命令

4
我在远程服务器上执行以下命令时遇到了问题。 | awk '{print $1}' 似乎对输出没有任何影响。我是否错误转义引号?更糟糕的是,这两个命令实际上是通过Python脚本提交的...因此转义变得更加混乱...
在本地服务器上:
ssh remote.server.com "find /root/directory -type f -exec md5sum {} + | awk '{print $1}'"

在远程服务器上:

find /root/directory -type f -exec md5sum {} + | awk '{print $1}' 
2个回答

8

让我们向 shellcheck 提问:

In yourscript line 1:
ssh remote.server.com "[...] | awk '{print $1}'"
                                           ^-- SC2029: Note that, unescaped, this
                                                       expands on the client side

这里是答案。你可以通过反斜杠来避免它。


4
你可以将$1转义为\$1,或者在本地运行awk:
ssh remote.server.com "find /root/directory -type f -exec md5sum {} +" | awk '{print $1}'

结果应该是相同的。

谢谢!你真厉害! - user3388884

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接