用于循环的Shell脚本:变量奇怪

时间:2012-11-09 20:01:53

标签: shell variables sh sgi irix

我的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的魔法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我的运气好多了:

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