我正在写一个 shell 脚本。该 shell 脚本在bash
终端内的 shell 中执行。它包含一个中央错误处理函数。请参阅以下基本演示片段:
function error_exit
{
echo "Error: ${1:-"Unknown Error"}" 1>&2
exit 1 # This unfortunately also exits the terminal
}
# lots of lines possibly calling error_exit
cd somewhere || error_exit "cd failed"
rm * || error_exit "rm failed"
# even more lines possibly calling error_exit
错误处理函数应该结束脚本但不应该结束终端。我怎样才能做到这一点?
使用
bash
的trap
内置命令在脚本退出时生成一个bash
实例:来自
help trap
:所以通过运行
trap 'bash' EXIT
,bash
将在 shell 接收到信号 EXIT 时读取并执行;产生一个交互式 shell 必然会产生阻止终端关闭的效果: