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
또한보십시오: