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