
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