shell的异常处理
1 $? 获取上一个命令的退出状态
1 #! /bin/bash 2 cp /home/homework/ha/dir /home/homework/ha/h >/dev/null 3 if [ "$?" != "0" ]; then 4 echo "yyyyy" 5 else 6 echo "zzzz" 7 fi
//写的时候要紧跟着上一条命令,不然捕获错了!!!
2 &&或者||
1 #! /bin/bash 2 cp /home/homework/ha/dir /home/homework/ha/h >/dev/null || echo "错误"
// && 是前一个条件对了才执行后面的,
// || 是前一个条件执行错了才执行后面的
3 trap
USAGE: trap [action condition ...] action 可以是 shell 内建指令、外部命令及脚本中的函数等 action 还可是”"(空)、’-'等,分别代表忽略相应信号及重置相应信号为默认行为。 =========== 有哪些condition: (trap -l //输出所有信号) 以下是常用的: EXIT:在shell退出前执行trap设置的命令,也可以指定为0 //程序非正常退出的资源回收的时候用 DEBUG:在任何命令执行前执行trap设置的命令,但对于函数仅在函数的第一条命令前执行一次 ERR:在命令结果为非0时,执行trap设置的命令