我的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的魔法吗?
答案 0 :(得分:1)
问题是远程主机上的登录shell是csh。 csh的一个奇怪特性是双引号内的美元符号总是特殊的(不能被转义)。单引号可以按预期工作,只要你不在其中使用换行符(csh要求使用反斜杠转义这些换行符)。
答案 1 :(得分:0)
我有点'随意发现当我交换单引号和双引号时这个特定的shell实现更快乐。
我的运气好多了:
ssh remote.host "/bin/sh -c 'for s in \`ls *.sh\`; do echo \$s; done'"