0이 아닌 값을 반환하는 경우 플래그가 설정되도록 쉘 스크립트(bash)에 플래그를 설정하고 싶습니다(예: 유사한 변수가 설정됨 errors="True"
).
지금까지 나는 스크립트를 호출 scriptname.sh 2>Error.log
한 후 다음을 수행하는 것을 고려했습니다.
if $(wc -l error.log) != 0; then
errors="True"
더 좋은 방법이 있어야 합니다. 저를 계몽해주세요.
답변1
이것이 바로 trap ERR
목적입니다. 불행하게도 와 같은 기능을 가지고 있습니다 set -e
. set -e
조건식에서 0이 아닌 값을 반환하는 모든 명령은 트랩을 트리거합니다. 다음은 몇 가지 샘플 코드입니다.
error=0
set_error() {
(( error++ ))
}
trap set_error ERR
ls askdjasdaj 2>/dev/null
false
false || true # false returns non-zero but is not counted due to the conditional
echo "$error" # outputs "2"