bash脚本是否有某种方法可以显式触发寻找ERR信号的陷阱(这是一个可以通过kill
明确调用的特殊信号,请参阅https://stackoverflow.com/a/26261518/8236733)?
有一个表格
#!/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;}
我原以为exit 1
足以发出陷阱信号,但情况似乎并非如此。是否还有其他方法可以在脚本中故意触发陷阱?感谢。
答案 0 :(得分:1)
ERR
陷阱仅在命令运行 by shell失败时执行,而不是在shell本身以非零退出状态退出时执行。对于您的情况,您希望使用EXIT
处理程序来测试退出状态。
trap 'rv=$?; if [ "$rv" -ne 0 ]; then error $LINENO $tablename; fi' EXIT