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


3

쉘 스크립트 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와 같은 특별한 경우를 원하지 않습니다. :)

답변:


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.

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


감사! 나는 그것을 하나의 복합 문장으로 생각하지 않았지만 그것은 말이됩니다.
사무엘 A. 팔보 II

0

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

./run-tests.sh

에코 $?


양. 테스트 목적으로 직접 코딩 된 exit 1 문.
사무엘 A. 팔보 II
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.