2013-11-27 3 views
2

이 작동하는지에 종료됩니다bash는 문

for foo in `find . -name "*_aod"` 
do 
    bar=${foo}.gz 
    if [ ! -e $bar ] 
    then 
     echo $bar 
    else 
     continue 
    fi 
done 

이 일치하는 첫 번째 파일을 발견하고 정지 :이 두 번째 코드는 중지 이유를 설명 할 수있는 사람을 좋아하고, 어떻게 것

for foo in `find . -name "*_aod"` 
do 
    bar=${foo}.gz 
    if [ -e $bar ] 
    then 
     echo $bar 
    else 
     continue 
    fi 
done 

루프를 따라 진행할 하나의 라이너를 작성할 수 있습니다.

+0

'찾을 수 있습니다. -name '* _aod.gz'' – jordanm

+0

파일 이름에 공백이나 다른 이상한 문자가 있습니까? 그렇다면'[-e "$ bar"]'를 사용하는 것이 좋습니다. – kmort

+0

두 번째 것은 저를 위해 멈추지 않습니다 .... 당신은'* _aod.gz '가 존재하는'* _aod'가 더 많이 있습니까? '[-e "$ bar"]'를 사용하면 어떻게됩니까? – Wrikken

답변

0

실제로 확장해야 할 곳은 $bar입니다. 그렇지 않으면이 같은 일이 일어날 수 있습니다

foo='a -a '; bar=${foo}.gz 
touch "$bar" 
[ -e $bar ] || echo "Whoa, '$bar' not there..." 
ls 

출력 :

Whoa, 'a -a .gz' not there... 
a -a .gz 

(이 예는 현재 작업 디렉토리가 비어있다 가정합니다.)