0

我正在尝试使用 foreach 连接到一组机器以检查文件是否存在,但是我不断收到 unmatched " 错误,我尝试了很多方法和大量转义字符来尝试使其工作。 ..但是我仍然收到错误,这是代码:

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 回答