하위 명령 오류가 발생하면 Bash for 루프가 종료되지 않는 문제를 해결하는 방법은 무엇입니까? a 루프가 있습니다. #!/bin/bash set -u set -e for l in

쉘 스크립트 a for a 루프가 있습니다.

#!/bin/bash
set -u
set -e
for l in sh rb py php java cs; do
  (cd $l; ./run-tests.sh)
done

하위 명령 중 하나가 비슷하게 오류가 발생하면 for-loop 다이를 발생시키는 것이 목적입니다.

이제 (cd $l; ./run-tests.sh) || die "Message here"적절한 해결 방법과 함께 해결 방법이 die있습니다. 그러나 왜 for-loop가 “set -e”명령으로 설정 한 기대에 따라 자체 종료되지 않는지 궁금합니다. 이상적으로는 모든 for-loop와 같은 특별한 경우를 원하지 않습니다. 🙂



답변

실패하면 set -e즉시 종료되지 않는 이유 는 ./run-test.sh다음과 같습니다.

for l in sh rb py php java cs; do
  (cd $l; ./run-tests.sh)
done

복합 문장. 이 복합 명령문의 상태는의 마지막 실행 상태입니다 ./run-tests.sh.

당신의 해결은 나에게 좋은 소리입니다.


답변

댓글 권한이 없으므로 여기에 게시하십시오. run-tests.sh의 스크립트에 따라 다릅니다. 이것이 0이 아닌 값을 제공하는지 확인하십시오.

./run-tests.sh

에코 $?