Nếu bạn muốn để có thể xử lý một lỗi thay vì mù quáng thoát, thay vì sử dụng set -e
, sử dụng một trap
trên ERR
tín hiệu giả.
#!/bin/bash
f () {
errorCode=$? # save the exit code as the first thing done in the trap function
echo "error $errorCode"
echo "the command executing at the time of the error was"
echo "$BASH_COMMAND"
echo "on line ${BASH_LINENO[0]}"
# do some error handling, cleanup, logging, notification
# $BASH_COMMAND contains the command that was being executed at the time of the trap
# ${BASH_LINENO[0]} contains the line number in the script of that command
# exit the script or return to try again, etc.
exit $errorCode # or use some other value or do return instead
}
trap f ERR
# do some stuff
false # returns 1 so it triggers the trap
# maybe do some other stuff
Các bẫy khác có thể được đặt để xử lý các tín hiệu khác, bao gồm các tín hiệu Unix thông thường cộng với các tín hiệu giả Bash khác RETURN
và DEBUG
.