
쉘 스크립트에 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
에코 $?