강력한 bash 스크립트를 작성하고 무언가가 잘못 될 때마다 스크립트가 실행되지 않도록하기 위해 set -e
을 사용합니다. 그것은 훌륭하지만 여전히 구멍이 하나 있습니다 : 조건. if f; then .... fi
을 작성하고 f
함수가 일부 명령 실행에 실패하면 스크립트가 종료되지 않습니다. 따라서 f
에있는 모든 명령의 리턴 코드와 모든 서브 루틴 f
invoke를 반복적으로 확인해야합니다. 이것은 성가신 일입니다.bash는 에러 상태로 에러를 처리합니다.
예 : bash의 일부 플래그 또는 옵션으로 조건 내에서도 실패합니다. 유일한 예외는 return
진술 내용 바로 안에 f
입니다. f
이 g
이고 g
이 1이면 오류로 간주됩니다. 단, g
을 조건이라고도하는 경우 (if g; then ... fi
) return
진술 내용이 g
인 경우 허용됩니다. 그래서 등등. 간결
BashFAQ # 105 - http://mywiki.wooledge.org/BashFAQ/105 - 여기에 관련성이 있습니다. 답은 "아니요, 할 수는 없으므로"(false 및 설명 오류를 반환하는 데 사용되는 반환 상태가 하나이기 때문에) 질문에 완전히 대답하지는 않지만 ' set -e' 및 ERR 트랩 동작에 대해 자세히 설명합니다. –