题
我工作的一个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)退出代码?
解决方案
在该过程接收信号(例如,来自trap
)kill
调度,而不是在退出代码,与陷阱... 0被保留以供处理的结局。 trap /blah/blah 0
将派在任exit 0
或exit 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"
不隶属于 StackOverflow