陷印壳退出代码
问题描述:
我正在处理一个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
答
您还可以使用||运算符,用||表示b,b在失败时执行
#!/bin/sh
failed
{
echo "Failed $*"
exit 1
}
dosomething arg1 || failed "some comments"
答
这只是一个退出代码,并不代表HUP。所以你的trap ... 1
正在寻找HUP,但出口只是一个出口。
除了系统信号,您可以通过执行trap -l
进行列表,您可以使用一些特殊的Bash sigspecs:ERR,EXIT,RETURN和DEBUG。在所有情况下,您都应该使用信号的名称而不是数字来提高可读性。