Shell编程之trap命令


title: Shell编程之trap命令
tags: shell编程,trap


前序

今天看公司里面的一段代码,看到下面一段:

trap "${log_cmds}" EXIT

当时看到这段以为这个trap是自己写的一个函数,搜索了一下才发现这个居然是linux自带的一个命令,了解之后才发现这个命令的功能真是太强大了。实在是值得我好好写一篇文章记载下来。

用法

到底是什么功能惊艳到我呢?trap是一个可以设置接收信号类型,然后执行你给出的命令的命令。比如上面我贴的代码,放在脚本里面的含义就是当脚本执行完毕,执行中间的命令。这种类似回调函数和Go语言中defer一样的用法,没想到Shell里面也有。具体的用法就是:

trap command signal

其中中间的是我们需要执行的命令,最后的是我们想要监听的信号(这里就不列出了所有的信号,可以trap -l查看),这样以后如果需要在脚本执行完毕后加log,就可以这么操作。

例子

 trap "echo 'xxoo' " HUP INT QUIT TSTP

执行完上面命令,每次在控制台Ctrl+c都会打印"xx00",这样我们可以做到屏蔽信号的作用,恢复到原样,执行下面的命令:

trap : HUP INT QUIT TSTP

小结

关于Linux的命令和Shell编程真是博大精深,需要好好去学习,去从别人的代码中去学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文全面系统地介绍了shell脚本调试技术,包括使用echo, tee, trap等命令输出关键信息,跟踪变量的值...
    liuzg0734阅读 935评论 0 14
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,256评论 2 33
  • 1. “:” 命令 Shell命令总是有一些奇怪的命令符,比如之前看到的“[”;这里又来了一个。你没有看错,“:”...
    姜淑均阅读 597评论 0 0
  • 女儿,加油!高考必胜!
    馨砚阅读 229评论 0 0
  • 文/无尾鱼 笔友叫我写同题《阿贵》, 太难!东南西北,四面八方,叫阿贵的太多, 阿猫阿狗,人生百态,关于阿贵的就更...
    Z无尾鱼阅读 293评论 0 0