显式触发错误陷阱bash
bash脚本是否有办法显式触发寻找错误信号的陷阱(这是一种特殊信号,可以通过显式触发错误陷阱bash,bash,error-handling,Bash,Error Handling,bash脚本是否有办法显式触发寻找错误信号的陷阱(这是一种特殊信号,可以通过kill显式调用,请参阅)? 有一个表单的陷阱文件 #!/bin/bash error() {#do stuff like alert people via email} trap 'error ${LINENO} $tablename' ERR 和一个脚本的形式 #!/bin/bash # trap to catch errors source '/home/mapr/etl_scripts/clarity/lib
kill
显式调用,请参阅)?
有一个表单的陷阱文件
#!/bin/bash
error() {#do stuff like alert people via email}
trap 'error ${LINENO} $tablename' ERR
和一个脚本的形式
#!/bin/bash
# trap to catch errors
source '/home/mapr/etl_scripts/clarity/lib.trap.sh'
{#try stuff} || {#catch stuff; exit 1;}
我原以为
出口1
足以发出陷阱信号,但事实似乎并非如此。是否有其他方法可以从脚本中故意触发陷阱?谢谢。只有当shell运行的命令失败时,才会执行ERR
陷阱,而不是当shell本身以非零退出状态退出时。对于您的情况,您希望使用一个测试退出状态的EXIT
处理程序
trap 'rv=$?; if [ "$rv" -ne 0 ]; then error $LINENO $tablename; fi' EXIT
您是否尝试过不使用进程组delim,即
stuff | | catch&exit 1
?祝你好运。@Sheller没有工作。抱歉,但是谢谢你(基本上,在整个try-catch部分之前,只需将exit 1
放在测试中,什么也没发生)。