Shell 陷阱外壳退出代码
我正在编写一个shell脚本,希望处理可能遇到的各种退出代码。为了进行尝试,我使用以下脚本:Shell 陷阱外壳退出代码,shell,signals,exit-code,shell-trap,Shell,Signals,Exit Code,Shell Trap,我正在编写一个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\";
#!/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
上调度。您也可以使用| |操作符,在a失败时执行| | b
#!/bin/sh
failed
{
echo "Failed $*"
exit 1
}
dosomething arg1 || failed "some comments"
这只是一个退出密码,并不意味着HUP。所以你的
陷阱。。。1
正在寻找HUP,但出口只是一个出口
除了可以通过执行trap-l列出的系统信号外,还可以使用一些特殊的Bash sigspecs:ERR、EXIT、RETURN和DEBUG。在所有情况下,为了便于阅读,您应该使用信号的名称而不是数字