开源是一种精神,分享是一种美德!

trap

相关命令:暂无相关命令
trap是一个shell内建命令,它用来在脚本中指定信号如何处理。比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序。如果要在Ctrl+C不退出程序,那么就得使用trap命令来指定一下SIGINT的处理方式了。trap命令不仅仅处理Linux信号,还能对脚本退出(EXIT)、调试(DEBUG)、错误(ERR)、返回(RETURN)等情况指定处理方式。

语法:
trap [-lp] [[arg] sigspec ...]

1,格式:trap "commands" signals ,当shell接收到signals指定的信号时,执行commands命令
2,格式:trap signals,如果没有指定命令部分,那么就将信号处理复原。比如 trap INT 就表明恢复Ctrl+C退出
3,格式:trap "" signals,忽略信号signals,可以多个,比如 trap "" INT 表明忽略SIGINT信号,按Ctrl+C也不能使脚本退出。又如 trap "" HUP 表明忽略SIGHUP信号,即网络断开时也不能使脚本退出
4,格式:trap -p ,trap -p signal,把当前的trap设置打印出来。
5,格式:trap -l,把所有信号打印出来。
6,格式:trap "commands" EXIT,脚本退出时执行commands指定的命令。
7,格式:trap "commands" DEBUG,在脚本执行时打印调试信息,比如打印将要执行的命令及参数列表。
8,格式:trap "commands" ERR,当命令出错,退出码非0,执行commands指定的命令。
9,格式:trap "commands" RETURN,当从shell函数返回、或者使用source命令执行另一个脚本文件时,执行commands指定的命令。
暂无该命令例子,添加例子

评论(1)

    • 沐耔 シ 磊§
      trap \'echo “signal:SIGINT\"\'  int   # int 相当与Ctrl+c
      trap -p
      for((i=0;i<=10;i++))
      do
      sleep 1
      echo $i
      trap \'\' int #trap \'\' 信号 忽略信号的操作
      trap -p
      for((i=11;i<=20;i++)
      do
      sleep 1
      echo $i
      done
      trap \'-\' int #rap \'-\' 信号 恢复原信号的操作
      trap -p
      for((i=21;i<=30;i++)
      do
      sleep 1
      echo $i
      done
      [回复]

评论

名字:
验证码:
获取验证码
内容: