0

foreachを使用して一連のマシンに接続し、ファイルが存在するかどうかを確認しようとしていますが、一致しない「」エラーが発生し続けます。それを機能させるために、さまざまな方法と多くのエスケープ文字を試しました。 ..それでもエラーが発生しますが、コードは次のとおりです。

foreach i ( machineA machineB machineC machineD machineE )
foreach? echo $i":"
foreach? ssh -q $i "\[ -f /etc/init.d/myprog \] \&\& echo \"File exists\" \|\| echo \"File does not exist\""
foreach? end
machineA:
Unmatched ".

おそらく何かばかげたものですが、私はここ数時間それを機能させようとして成功しませんでした...

私がsshを介してリモートで実行しようとしている行は次のとおりです。

[ -f /etc/init.d/myprog ] && echo "File exists" || echo "File does not exist"

また、この方法を試しました(他のいくつかの方法の中で):

foreach? ssh -q -o "BatchMode=yes" $i "[ -f /etc/init.d/netbatch ]" && echo \"File exists\" \|\| echo \"File does not exists\""

助けてくれてありがとう!!!

4

1 に答える 1

4

私の経験では、引用すると、csh は常に少し危険でした。

これを試して:

foreach i ( machineA machineB machineC machineD machineE )
echo $i":"
ssh -q $i '[ -f /etc/init.d/myprog ] && echo "File exists" || echo "File does not exist"'
end

すべてをエスケープする必要がなくなる単一引用符で展開されるものはありません。

于 2012-05-25T22:23:00.200 に答える