set -e 的 shell 退出功能

问题描述 投票:0回答:1

我有一个

script.command
文件,里面有 shell 脚本,这样我就可以双击它在新的终端窗口中执行。当它完成脚本时,无论退出代码如何,它都会自动关闭。以前我常常在每个麻烦的命令后面加上 ifs,如下所示:

iCanCouseError
if [[ $? -ne 0 ]]; then
    read -p "Press enter to close"
    exit 1
fi

这会保持终端打开,直到我按下按钮,以便我可以读取日志并确定导致异常的原因。

但现在我改用了一种更方便的方法:在文件开头的

set -e
。如果任何命令失败,它会自动退出脚本并显示错误代码。但现在我无法在终端关闭之前读取日志。我想知道除了
set -e
之外,是否还有某种方法可以设置退出函数,该函数始终在脚本退出之前执行,这样我就可以将
read
命令放在那里,以在出现非零退出代码时阻止终端关闭.

function shell set exit
1个回答
0
投票

将命令打包在单独的“iCanCauseError”脚本文件中, 或在同一文件中使用函数:

set -e

iCanCauseError () {
  cmd1
  cmd2
  ...
  cmdN
}

然后最后一个

iCanCauseError || read -p "Press enter"
就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.