Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显式触发错误陷阱bash_Bash_Error Handling - Fatal编程技术网

显式触发错误陷阱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

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.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
放在测试中,什么也没发生)。