이 스크립트가 명시 적 exit 명령을 사용하여 계속 실행되는 이유가 궁금합니다. 다음과 같은 내용Bash 종료가 종료되지 않습니다.
aaaaaa bbbbbb cccccc dddddd eeeeee ffffff gggggg
file2.txt
:
file1.txt
다음과 같은 내용 :
111111 aaaaaa 222222 333333 ffffff 444444
스크립트 (test.sh
)이이 두 개의 중첩 된 루프입니다
나는 두 개의 파일이 첫 번째 파일의 모든 행에 두 번째 파일의 행이 포함되어 있는지 확인합니다. 일치하는 항목이 있으면 중단됩니다.
aaaaaa !!!!!!!!!! bbbbbb cccccc dddddd eeeeee ffffff !!!!!!!!!! gggggg
모두 스크립트의 실행을 종료 안 exit
수 있습니다 :
#!/bin/bash
path=`dirname $0`
cat $path/file1.txt | while read line
do
echo $line
cat $RUTA/file2.txt | while read another
do
if [ ! -z "`echo $line | grep -i $another`" ]; then
echo "!!!!!!!!!!"
exit 0
fi
done
done
나는 그것이 첫 번째 !!!!!!!!!!
를 인쇄 한 후 종료한다하더라도 다음과 같은 출력을 얻을?
유일한 이유를 사용할 수 있습니다 파이프가 'while'으로 인해 생긴 것입니다. 파이프는'while'에 대해 다른 서브 프로세스 (셸)를 시작할 것이므로'while' 내의'exit'는 그 셸을 빠져 나갑니다. – lurker