Bash: 如何捕获 set -e,但不退出
Bash: how to trap set -e, but not exit
我的脚本有第一条指令:
set -e
这样一来,每当发生错误时,脚本就会中止。我想捕获这种情况以显示一条信息消息,但我不想在脚本退出时显示该消息;仅当 set -e 触发流产时。有没有可能陷入这种情况?
这个:
set -e
function mytrap {
echo "Abnormal termination!"
}
trap mytrap EXIT
error
echo "Normal termination"
在任何出口调用(无论是否发生错误),这不是我想要的。
不是在 EXIT
上使用 trap
,而是在 ERR
事件上使用它:
trap mytrap ERR
完整代码:
set -e
function mytrap {
echo "Abnormal termination!"
}
trap mytrap ERR
(($#)) && error
echo "Normal termination"
现在运行它用于错误生成:
bash sete.sh 123
sete.sh: line 9: error: command not found
Abnormal termination!
这里是正常退出:
bash sete.sh
Normal termination
我的脚本有第一条指令:
set -e
这样一来,每当发生错误时,脚本就会中止。我想捕获这种情况以显示一条信息消息,但我不想在脚本退出时显示该消息;仅当 set -e 触发流产时。有没有可能陷入这种情况?
这个:
set -e
function mytrap {
echo "Abnormal termination!"
}
trap mytrap EXIT
error
echo "Normal termination"
在任何出口调用(无论是否发生错误),这不是我想要的。
不是在 EXIT
上使用 trap
,而是在 ERR
事件上使用它:
trap mytrap ERR
完整代码:
set -e
function mytrap {
echo "Abnormal termination!"
}
trap mytrap ERR
(($#)) && error
echo "Normal termination"
现在运行它用于错误生成:
bash sete.sh 123
sete.sh: line 9: error: command not found
Abnormal termination!
这里是正常退出:
bash sete.sh
Normal termination