信号名 | 产生原因 |
---|---|
EXIT | 从一个函数中退出或整个脚本执行完毕 |
ERR | 从一条命令返回非零状态时(代表命令执行不成功) |
DEBUG | 脚本中每一条命令执行之前 |
#!/bin/bash ERRTRAP() { echo "[LINE: $1] Error: Command or function exited with status $?" } foo() { return 1; } trap 'ERRTRAP $LINENO' ERR abc foo
#!/bin/bash trap 'echo "befor execute line:$LINENO, a=$a,b=$a,c=$c"' DEBUG a=1 if [ "$a" -eq 1 ] then b=2 else b=1 fi c=3 echo "end"
tee调试技巧二
tee命令会从标准输入读取数据,将其内容输出到标准输出设备,同时又可将内容保存成文件。
示例一
ipaddr=`hostname -I|cut -d' ' -f1|tee temp.txt` echo $ipaddr
TRACE() { if [ "$DEBUG" = "true" ]; then $@ fi } a=1 TRACE echo "a=$a" if [ "$a" -eq 1 ]; then echo $a fi
sh -c 'a=1;b=2;let c=$a+$b;echo "c=$c"'
-x 加强 默认缺省$PS4的值是“+” export PS4='+{$LINENO:${FUNCNAME[0]}} '