linux中的trap命令 | set

来源:互联网 发布:小班美工区域材料图片 编辑:程序博客网 时间:2024/06/07 08:36

1.trap命令

trap命令用于捕获指定的信号,并配置在接收到指定的信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。


2.trap的使用格式

(1)trap ‘command’ signal-list   表示捕获信号列表signal-list中的信号,然后执行command命令。

(2)trap ‘’ signal-list   表示捕获signal-list信号列表,并且什么也不做,也就是让脚本忽略这些信号。

(3)trap signal-list    表示让捕获signal-list信号后,执行默认操作。


例如,

trap 'echo you hit Ctrl-C/Ctrl-\, now exiting..; exit' SIGINT SIGQUIT  #表示捕获SIGINT和SIGQUIT信号,然后执行echo和exit操作。trap 'my_exit; exit' SIGINT SIGQUIT  #将trap的command放到函数中my_exit(){echo "you hit Ctrl-C/Ctrl-\, now exiting.."}


3.一点闲话

在shell脚本中,如果某一个命令执行失败,那么该命令后面的其他的命令仍然会执行,当然除了&& ||中的命令。

所以我们需要在脚本中使用if [ $? == 0 ]; then这样的语句来判断,避免后续命令的错误执行。 当然,我们可以在脚本的开始处加入set -e能达到同样的效果。


4.关于set命令

(1)set -e  脚本执行过程如果有命令执行返回值为非0,那么脚本将结束,不在继续执行,类似于-o errexit。使用set +e表示取消set -e。所以在编写脚本中,我们最好默认加上set -e。

(2)set -u 表示脚本中如果有变量没有初始化,那么执行脚本时将会报错。

(3)set -x 表示debug模式执行脚本,相当于sh -x scriptname.sh

0 0
原创粉丝点击