trap

    主要用途

    • 用于指定在接收到信号后将要采取的动作。
    • 脚本程序被中断时执行清理工作。
    1. -p 显示与每个信号关联的trap命令。

    参数

    arg:接收到信号时执行的命令。

    signal_spec:信号名称或信号名称对应的数字。

    如果表达式执行结果为成功时返回0,当参数 signal_spec 没有指定有效值时返回1。

    关于信号

    在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我们可不希望用户使用 Ctrl+C 等方法进入到shell状态做我们不希望做的事情。这便用到了信号处理。

    以下是一些你可能会遇到的常见信号:

    当shell收到 HUP INT PIPE QUIT TERM 这几个命令时,当前执行的程序会执行 。

    1. trap "rm -f $WORKDIR/work1 $WORKDIR/dataout; exit" 2

    执行shell程序,如果程序接收信号为2,那么这两个文件 (work1 和 dataout) 将被自动删除。

    添加信号1 SIGHUP

    如果陷阱列出的命令是空的,指定的信号接收时,将被忽略:

    1. $ trap '' 2

    当你改变了收到信号后采取的动作,你可以省略第一个参数来重置到默认行为。

      1. trap -l 等价于执行 kill -l
      2. 发送信号请查看 kill 命令。
      3. 该命令是bash内建命令,相关的帮助信息请查看 命令。
      4. 建议您阅读以下参考资料来深入了解该命令: