在脚本中通过 ssh 使用反引号 (`)

Aar*_*ron 4 ssh bash shell

我有一个命令,当我在本地运行时,我使用反引号来获取其中包含的命令的输出,并且我想通过 ssh 发送它(这不是实际的命令,而是一个缩短的示例)

cat `ls -alr | grep 'someregex'`
Run Code Online (Sandbox Code Playgroud)

我尝试使用

ssh -f hostname cat `ls | grep 'someregex'`
Run Code Online (Sandbox Code Playgroud)

然而,这并不像我预期的那样,而是在本地执行反引号,有没有人知道解决这个问题的方法?

Wil*_*den 6

尝试将命令括在引号中:

ssh -f hostname 'cat `ls | grep "someregex"`'
Run Code Online (Sandbox Code Playgroud)

请注意,必须用双引号替换内部引号。

另外,请注意,您不能将整个命令括在双引号中,因为 bash 会在调用ssh. 例如,比较以下命令:

$ echo "`echo foo`"
foo
$ echo '`echo foo`'
`echo foo`
Run Code Online (Sandbox Code Playgroud)

  • 为什么不只使用双引号并避免完全转义? (4认同)