我工作的一个shell脚本,以及要处理,我可能会遇到各种各样的退出代码。要尝试的东西出来,我使用这个脚本:

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 1
exit 1;

我想我失去了一些东西,但似乎我不能捕获我自己的“退出1”。如果我尝试陷阱0一切顺利:

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 0
exit

有什么我应该知道的陷阱HUP(1)退出代码?

有帮助吗?

解决方案

在该过程接收信号(例如,来自trapkill调度,而不是在退出代码,与陷阱... 0被保留以供处理的结局。 trap /blah/blah 0将派在任exit 0exit 1

其他提示

这只是一个退出代码,这并不意味着HUP。所以你trap ... 1正在寻找HUP,但出口只是出口。

在除了系统的信号,你可以通过做trap -l列表,你可以使用一些特殊的Bash sigspecs:ERR,EXIT,RETURN和调试。在任何情况下,你应该使用的信号的名称,而不是为了可读性的数量。

您还可以使用||运营商,拥有一个|| B,当一个故障B获得执行

#!/bin/sh

failed
{
    echo "Failed $*"
    exit 1
}

dosomething arg1 || failed "some comments"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top