중앙 Linux 상자 (RHEL 6.3)에서 일련의 다른 zip 파일을 다른 Linux 호스트로 푸시 한 다음 각 대상 호스트에서 해당 파일의 압축을 풀려고합니다. 내 중앙 호스트는 hpdb1입니다.중첩 for 루프 관련 문제
#Push zip files to other hosts
for i in {2..8}; do
scp -r /software/stage/*.zip [email protected]$i:/software/stage
done
#Unzip files to /software/stage
for i in {2..8}; do
ssh hpdb$i "for f in /software/stage/*.zip; do unzip /software/stage/"$f" done";
done
첫 번째 for 루프가 파일을 제대로 작동합니다. 루프 중첩을 실행하는 경우 그러나, 나는 다음과 같은 오류가 다음 $f
변수가 해석 가져 오지처럼
[[email protected] ~]# for i in {2..8}; do ssh hpdb$i "for f in /software/stage/*.zip; do unzip /software/stage/"$f"; done"; done
unzip: cannot find or open /software/stage/, /software/stage/.zip or /software/stage/.ZIP.
unzip: cannot find or open /software/stage/, /software/stage/.zip or /software/stage/.ZIP.
보인다. 어떤 아이디어?
답변으로 업데이트 됨
이 코드는 작동합니다.
for i in {2..7}; do
ssh hpdb$i 'for f in /software/stage/*.zip; do unzip "$f" -d /software/stage; done';
done
. 나는 이것이 대답이라고 생각한다. –
Rob과 DopeGhoti, 너희들 대부분이 옳았지만 의로의 길에있어. 작은 따옴표로 파일을 찾을 수 있었지만 실행했을 때 다음 오류가 발생했습니다. unzip : 찾을 수 없거나 open /software/stage/software/stage/p13390677_112040_Linux-x86-64_1of7.zip 그래서 나는 /software/stage/*.zip 파일에서 구문을 hpdb $ i '로 변경했습니다. "$ f"를 압축 해제하십시오; 끝난'; done 그게 효과가 있었지만 모든 것을/root에 압축을 풉니 다. 압축 해제를 위해 -d 플래그를 사용하여 더 수정하여 챔피언처럼 일했습니다! /software/stage/*.zip에서 f를위한 hpdb $ i '; "$ f"-d/software/stage의 압축을 풉니 다. 끝난'; done – user3311061