我有一个
script.command
文件,里面有 shell 脚本,这样我就可以双击它在新的终端窗口中执行。当它完成脚本时,无论退出代码如何,它都会自动关闭。以前我常常在每个麻烦的命令后面加上 ifs,如下所示:
iCanCouseError
if [[ $? -ne 0 ]]; then
read -p "Press enter to close"
exit 1
fi
这会保持终端打开,直到我按下按钮,以便我可以读取日志并确定导致异常的原因。
但现在我改用了一种更方便的方法:在文件开头的
set -e
。如果任何命令失败,它会自动退出脚本并显示错误代码。但现在我无法在终端关闭之前读取日志。我想知道除了 set -e
之外,是否还有某种方法可以设置退出函数,该函数始终在脚本退出之前执行,这样我就可以将 read
命令放在那里,以在出现非零退出代码时阻止终端关闭.
将命令打包在单独的“iCanCauseError”脚本文件中, 或在同一文件中使用函数:
set -e
iCanCauseError () {
cmd1
cmd2
...
cmdN
}
然后最后一个
iCanCauseError || read -p "Press enter"
就足够了。