我有一个命令,当我在本地运行时,我使用反引号来获取其中包含的命令的输出,我想通过ssh发送它(这不是实际的命令,而是一个缩短的例子)< / p>
cat `ls -alr | grep 'someregex'`
我尝试使用
ssh -f hostname cat `ls | grep 'someregex'`
然而这并没有像我期望的那样发挥作用而是在本地执行反引号,有没有人知道解决这个问题?
答案 0 :(得分:3)
尝试将命令括在引号中:
ssh -f hostname 'cat `ls | grep "someregex"`'
请注意,内部引号必须替换为双引号。
另外,请注意,您不能将整个命令括在双引号中,因为bash会在调用ssh
之前在本地扩展子shell。例如,比较以下命令:
$ echo "`echo foo`"
foo
$ echo '`echo foo`'
`echo foo`