1

私のshell-fuは弱く、これらのSGI(IRIX 6.5)ボックスは役に立ちません。Linuxで期待するように動作します。

最終的な目標は、リモートシステムで1つ以上のシェルスクリプトを実行することです。適切な場所に1つのシェルスクリプトがあるので、これは単純なはずです。

$ 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

問題は、リモートホストのログインシェルがcshであるということです。cshの奇妙な特性の1つは、二重引用符で囲まれたドル記号が常に特殊である(エスケープできない)ことです。一重引用符は、改行を使用しない限り、期待どおりに機能します(cshでは、改行を使用して改行する必要があります)。

于 2012-11-13T13:38:50.377 に答える
0

一重引用符と二重引用符を入れ替えると、この特定のシェル実装の方が幸せであることがランダムにわかりました。

私ははるかに幸運でした:

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