if
쉘 스크립트에서 중첩된 문을 사용하고 있습니다. 문이 실패하면 스크립트의 다른 부분을 실행하지 않고 스크립트에서 나와야 합니다. 나는 exit 1
및 를 사용해 보았습니다 set -e
.
0이 아닌 상태를 반환하는 set -e
일부 명령문을 사용했기 때문에 그렇게 할 수 없습니다 .grep
명령문이 실패할 경우 스크립트 실행을 중지하는 방법을 알려줄 수 있는 사람이 있습니까?
답변1
set -e
특정 진술이 있으면 계속 사용할 수 있습니다 .예상되는실패하면 오류 상태를 파악하고 "처리"하면 됩니다.
$ cat 454756.sh
#!/bin/bash
set -e
[[ 1 -eq 2 ]] || :
echo "Still got here!"
$ ./454756.sh
Still got here!
set -e
스크립트를 중단합니다잡히지 않은오류 상태. 그렇지 않으면 해당 명령문을 사용할 수 없습니다 if
.
# this also still works
set -e
if /bin/false; then
echo "nope"
else
echo "yep"
fi
주문은 || :
명령에서 발생하는 오류를 "먹는" 깔끔한 방법으로, set -e
특정 명령을 사용하고 실패할 때 유용합니다.완전히 괜찮아.
또 다른 방법은 -e
관련 명령 전에 설정을 해제한 다음 재설정하는 것입니다.
set -e
do_stuff
set +e
/bin/false
set -e