계속이 많이 포함된 bash 스크립트의 결과를 인쇄합니다.

계속이 많이 포함된 bash 스크립트의 결과를 인쇄합니다.

2개의 루프를 사용하는 스크립트가 있습니다.
첫 번째 루프- 특정 파일을 검색하여 해당 파일이 존재하는 경우 추가 테스트를 수행합니다. 서버에서 CPU를 많이 사용하지 않기 위해 continue루프에서 사용하기로 결정했습니다.
두 번째 사이클-첫 번째 루프를 기반으로 결과를 인쇄합니다.

스크립트는 대략 다음과 같습니다.

for line in `find ./ -type f`; do

# first file test
   if [[ -f /directory/test1 ]]; then
        present=1
        continue
   fi
# second file test
   if [[ -f /directory/test2 ]]; then
        present=1
        continue
   fi
done

if [[ $present = '1' ]]; then
   echo "exists" 
else
   echo "does not exist"
fi

따라서 기본적으로 첫 번째 테스트(첫 번째 파일 테스트 또는 두 번째 파일 테스트)가 유효하면 continue루프가 끊어지고 새로운 반복이 시작되므로 스크립트의 맨 아래에 도달하지 않습니다.

이로 인해 두 번째 테스트가 실패하고 스크립트는 다음 파일이 포함된 결과만 인쇄합니다.존재하지 않는다.

내 질문은 모든 결과(존재 및 부재)를 인쇄하는 방법입니다.

감사해요.

답변1

다음과 같이 작성해 보세요.

if [[ -f /directory/test1 || -f /directory/test2  ]]; then
    echo exists
else
    echo 'does not exist'
fi

또한 당신은해야출력을 구문 분석하지 않습니다.find너도 같은 이유로파싱하면 안 된다ls

관련 정보