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



我在远程服务器上发出以下命令时遇到了问题。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}' 

让我们问一下shellcheck:

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

好了。可以用反斜杠转义。

您可以将$1转义为$1或在本地运行awk:

ssh remote.server.com "find /root/directory -type f -exec md5sum {} +" | awk '{print $1}'

结果应该相同。

最新更新