오류가 발생하면 while 루프를 종료합니다.

오류가 발생하면 while 루프를 종료합니다.

while다음 형식의 루프 가 있습니다 .

while :; do
   performTask1 || break
   performTask2 || break
   performTask3 || break
   ...
   performTaskX || break
done

기본적으로 작업 중 하나가 잘못될 때마다 루프에서 벗어나고 싶습니다. 이를 달성하는 더 좋은 방법이 있습니까?

다른 방법은 다음과 같습니다.

while :; do
   performTask1 && performTask2 ... && performTaskX || break
done

그러나 이것은 여전히 ​​​​나에게 추악해 보입니다.

답변1

기본적으로 작업이 실패하면 후속 작업이 실행되지 않아야 한다는 의미입니다. 중단할 필요 없이 이전 작업의 성공적인 완료에 따라 작업을 종속되게 만드세요.

while
  performTask1 &&
  performTask2 &&
  ...
  performTaskX-1 &&
  performTaskX
do :; done

모든 작업을 한 줄에 넣을 필요는 없습니다. 제 생각에는 이 형식이 보기 흉하지 않습니다.

답변2

set -e
while :; do
   performTask1
   performTask2
   performTask3
   ...
   performTaskX
done
set +e

그러면 종료됩니다.전체 스크립트오류가 있는 경우.

이것이 스크립트의 마지막 부분이 아닌 경우 다음을 사용할 수 있습니다.

while performTask1 &&
    performTask2 &&
    performTask3 &&
    ... &&
    performTaskX
do
  :
done

또한보십시오:

관련 정보