하위 명령 오류 시 Bash for 루프가 종료되지 않는 문제를 해결하는 방법은 무엇입니까?

하위 명령 오류 시 Bash for 루프가 종료되지 않는 문제를 해결하는 방법은 무엇입니까?

쉘 스크립트에 for-loop가 있습니다.

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

하위 명령 중 하나라도 유사한 오류가 발생하면 for 루프가 불타오르도록 하는 것이 목적입니다.

(cd $l; ./run-tests.sh) || die "Message here"이제 적절한 정의와 함께 해결 방법이 마련되었습니다 die. 그러나 "set -e" 명령으로 설정된 기대에 따라 for 루프가 자체 종료되지 않는 이유가 정말 궁금합니다. 이상적으로는 모든 for 루프를 그런 식으로 특수 처리하지 않고 싶습니다. :)

답변1

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

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

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

당신의 해결 방법이 나에게는 좋은 것 같습니다.

답변2

댓글 권한이 없어서 여기에 올립니다. run-tests.sh의 스크립트에 따라 다릅니다. 이것이 0이 아닌 값을 제공한다고 확신합니까?

./run-tests.sh

에코 $?

관련 정보