쉘 스크립트 파일이 있습니다 /bin/foo
.
오류가 발생하면 쉘 스크립트를 종료하고 사용자에게 메시지를 보내는 방법은 무엇입니까?
a를 사용하면 set -e
오류와 함께 종료되지만 STDOUT으로 메시지를 보내거나 메일을 보내는 등 오류가 발생하면 어떤 명령도 실행하지 않습니다.
질문: 쉘 스크립트가 실패할 경우 명령을 어떻게 실행합니까?
SLES12, 배쉬.
답변1
사용자에게 메시지를 보내고 trap
스크립트가 오류와 함께 종료될 때 실행되도록 하는 함수를 만들 수 있습니다.
#!/bin/bash
set -e
on_exit () {
echo "This script has exited in error"
}
trap on_exit ERR
echo 'yes' | grep "$1"
사용 중:
$ ./script.sh yes
yes
$ ./script.sh no
This script has exited in error
답변2
(bash 대신) 이전 sh에서도 작동하도록 하려면 다음을 수행하세요.
#!/bin/sh
set -e
trap 'test $? -gt 0 && echo "This script has exited in error" >&2' 0
echo 'yes' | grep "$1"