bash,明确触发ERR陷阱

时间:2018-05-05 02:32:52

标签: bash error-handling

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足以发出陷阱信号,但情况似乎并非如此。是否还有其他方法可以在脚本中故意触发陷阱?感谢。

1 个答案:

答案 0 :(得分:1)

ERR陷阱仅在命令运行 by shell失败时执行,而不是在shell本身以非零退出状态退出时执行。对于您的情况,您希望使用EXIT处理程序来测试退出状态。

trap 'rv=$?; if [ "$rv" -ne 0 ]; then error $LINENO $tablename; fi' EXIT