1

我的 shell-fu 很弱,这些 SGI (IRIX 6.5) 盒子没有帮助。它像我期望的那样在 Linux 上工作。

最终目标是在远程系统上运行一个或多个 shell 脚本。在适当的位置有一个 shell 脚本,所以这应该很简单:

$ ssh remote.host '/bin/sh -c "for s in *.sh; do echo \$s; done"'
s - Undefined variable

……嗯,好的。出于随机好奇,只需更改变量名称:

$ ssh remote.host '/bin/sh -c "for i in *.sh; do echo \$i; done"'
12

这同样会导致失败:

$ ssh remote.host '/bin/sh/ -c "for s in `ls *.sh`; do echo \$s; done"'\
s - Undefined variable

有人可以教我 IRIX 的魔法吗?

4

2 回答 2

1

问题是远程主机上的登录 shell 是 csh。csh 的一个奇怪属性是双引号内的美元符号总是特殊的(不能转义)。只要您不在其中使用换行符,单引号就可以按预期工作(csh 要求这些用反斜杠转义)。

于 2012-11-13T13:38:50.377 回答
0

我有点'随机发现,当我交换单引号和双引号时,这个特定的 shell 实现更快乐。

我的运气要好得多:

ssh remote.host "/bin/sh -c 'for s in \`ls *.sh\`; do echo \$s; done'"
于 2012-11-12T23:17:29.170 回答