0
중첩 된 if-else 문을 사용하여 파일을 검색하는 스크립트가 있습니다. 중첩 된 명령문 중 하나에 대해 조건이 충족되면 스크립트를 종료하겠습니다.일단 조건이 충족되면 중첩 된 if-else 문을 종료/중단하는 방법
그러나 스크립트는 여전히 나머지 모든 if-else 문을 계속 실행합니다.
나는 exit 0을 사용하여 테스트했지만 0을 반환하지만 어느 것도 작동하지 않습니다. 나는 더 나은 방법은 각 검색을 반복하는 while 루프를 사용하는 것으로 나타났습니다
#!/bin/sh
PATH1=/filer1_vol1_dir1
PATH2=/filer2_vol1_dir1
PATH3=/filer3_vol1_dir2
PATTERN=fruits
find $PATH1 -type f -name "*$PATTERN*" -exec ls -l {} \; >> /tmp/${PATTERN}_search
if [[ -s /tmp/${PATTERN}_search && `grep -i apples /tmp/${PATTERN}_search` ]]
then
echo "Matching files have been found under $PATH1"
cat /tmp/${PATTERN}_search
return 0
else
echo "No matching files, proceeding to search $PATH2"
find $PATH2 -type f -name "*$PATTERN*" -exec ls -l {} \; >> /tmp/${PATTERN}_search
if [[ -s /tmp/${PATTERN}_search && `grep -i apples /tmp/${PATTERN}_search` ]]
then
echo "Matching files have been found under $PATH2"
cat /tmp/${PATTERN}_search
return 0
else
echo "No matching files, proceeding to search $PATH3"
find $PATH3 -type f -name "*$PATTERN*" -exec ls -l {} \; >> /tmp/${PATTERN}_search
if [[ -s /tmp/${PATTERN}_search && `grep -i apples /tmp/${PATTERN}_search` ]]
then
echo "Matching files have been found under $PATH3"
cat /tmp/${PATTERN}_search
return 0
else
echo "No file matches, please search elsewhere"
return 0
fi
fi
fi
exit 0