트랩 메시지와 $LINE_NO를 캡처할 수 있나요?

트랩 메시지와 $LINE_NO를 캡처할 수 있나요?

비슷한 코드가 있습니다.

trap 'error ${LINENO} ${BASH_COMMAND}' ERR

오류 메시지도 캡처하고 싶습니다. 오류 메시지를 인쇄하기 위한 내장 변수가 있습니까?

답변1

쉘 스크립트의 오류 처리는 매우 간단합니다. 모든 유형의 문제를 감지하는 유일한 표준화된 방법은 다음과 같습니다.반환 코드명령(오류가 발생한 경우 0이 아님) 및 인쇄 대상표준 에러(파일 설명자 2). 기본적으로 표준 오류가 터미널에 인쇄됩니다. error예를 들어 오류 메시지가 다른 출력에 의해 가려지는 등의 이유로 이를 전달해야 하는 경우 현재 셸을 다음으로 바꿀 수 있습니다.표준 오류를 임시 파일에 저장:

trap 'rm -f "${stderr_output_file}"' EXIT
stderr_output_file="$(mktemp)"
exec 2>"${stderr_output_file}"
[the rest of your program]

관련 정보