2012-05-25 2 views
0

foreach를 사용하여 파일이 존재하는지 여부를 확인하는 컴퓨터 세트에 연결하려고 시도하지만 비교할 수없는 "오류가 계속 발생합니다. 방법 및 이스케이프 문자 많이하지만 난 여전히 오류가 ... 작동하게 만들려고 노력, 여기에 코드입니다 : 아마간단한 csh ssh 스크립트

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\"" 

감사합니다 어떤 도움을 많이!

+0

이것은 'bash'코드가 아닌'csh' 코드입니다. 이것을 반영하도록 편집했습니다. –

답변

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 

아무것도 모두를 탈출 할 필요가 없습니다 따옴표로 확장되지 않습니다.

+0

신난다, 그 트릭을했다 :) 고마워요 !!! 작은 따옴표입니다! –