bash 스크립트 종료 및 오류 트랩 및 diff 논리

bash 스크립트 종료 및 오류 트랩 및 diff 논리

EXIT 및 ERR 조건을 캡처하는 기능을 추가하고 싶은 bash 스크립트가 있습니다. 현재 구조는

trap cleanup EXIT

function notify(reason) {}
function build {}
function dbops {}
function deploy {}
function cleanup {}

notify('start') \
&& build \
&& dbops \
&& deploy \
&& notify('finished');

오류 트랩을 추가하고 (선택적으로) 종료 이유를 캡처하여 알림 기능을 통해 보내는 권장 방법은 무엇입니까? 이제 모든 정리 작업은 종료 시 잠금 파일을 삭제하는 것입니다.

notify(reason)스크립트가 예기치 않게 실패하는 경우 Slack에 메시지를 보낼 수 있기를 원하지만, 정상적으로 종료할 수는 없습니다.

내 실행 체인이 오류를 올바르게 포착하는 데 방해가 됩니까?

답변1

trap ... ERR종료 코드를 테스트한 명령에서는 오류를 포착할 수 없습니다 . 특정 경우에는 bash 매뉴얼 페이지에서 다음을 수행하십시오.

실패한 명령이... && 또는 || 내에서 실행되는 명령의 일부인 경우 마지막 &&... 뒤에 나열된 명령을 제외하고는 ERR 트랩이 실행되지 않습니다.

일반적으로 함수 세트가 정리되도록 보장하는 가장 쉬운 방법은 함수가 어떻게 종료되든 여전히 정리할 수 있도록 하위 쉘에서 실행하는 것입니다.

관련 정보