set -e
exit
"uncatch" 에서 실행하는 것과 유사하게 $? != 0
이 이벤트가 call 과 같은 다른 명령의 실행을 트리거하기를 원합니다 logger
. 이것이 어떻게 달성될 수 있습니까?
답변1
암시한 대로이 문제trap
, 대답은 신호에 하나를 설정하는 것입니다 ERR
. 이는 기본적 set -e
으로 에 해당합니다 trap 'exit' ERR
. 예를 들어 오류를 기록하고 실행을 계속하려면 다음을 사용하세요.
trap 'logger -t myscriptname "Command $BASH_COMMAND exited with code $?"' ERR
Bash에서 이 변수에는 $BASH_COMMAND
문제의 명령이 포함되어 있습니다. $?
마지막으로 실행된 명령의 종료 코드를 포함합니다. 예를 들어 여러 작업을 수행하려는 경우 종료 코드가 하나만 포함되지 않으므로 logger ...; echo $?
먼저 변수에 저장해야 할 수도 있습니다.$?
logger
$BASH_COMMAND
trap 'EXITCODE=$?; logger -t "Command $BASH_COMMAND exited with code $EXITCODE"; echo "$BASH_COMMAND at line $LINENO exited with code $EXITCODE"' ERR
물론 이렇게 긴 줄 대신에 $?
함수 를 선언하고 전달하는 것이 더 나을 것입니다 !$BASH_COMMAND