在远程主机上运行带有变量替换的管道命令

时间:2016-04-30 03:27:16

标签: bash ssh

我将在远程主机上运行带变量替换的管道命令并重定向输出。鉴于登录shell是csh,我必须使用“bash -c”。在用户nlrc和jerdiggity的帮助下,没有变量替换的命令可以表示为:

localhost$ ssh -f -q remotehost 'bash -c "ls /var/tmp/ora_flist.sh|xargs -L1 cat >/var/tmp/1"'

但上面的单引号将预先使用变量替换,比如用ora_flist.sh替换$ filename。我怎么能做到这一点?

感谢。

2 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

ssh -f -q remotehost 'bash -c "ls /var/tmp/ora_flist.sh|xargs -L1 cat >/var/tmp/1"'

答案 1 :(得分:0)

所以你的问题是你希望shell变量在本地扩展。只需将它留在单引号之外,例如

this.Finish();

避免引用地狱的另一个非常有用的技巧是使用heredoc,例如

Finish()