trap--shell脚本调试的不二人选
生活随笔
收集整理的這篇文章主要介紹了
trap--shell脚本调试的不二人选
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
trap簡介
trap的格式如下,功能就是捕捉信號,并對信號進行處理
trap [-lp] [[arg] sigspec ...]- arg可以是shell命令或者自定義函數
- sigspec可以是以下的一個或多個
- 定義在<signal.h>中的信號名或者數值。信號名的大小寫不敏感,SIG這個前綴也是可選的。以下的命令的效果都是一樣的
調試腳本時,trap經常用到的信號量
- EXIT:在shell退出前執行trap設置的命令,也可以指定為0
- RETURN:在.和``source執行其他腳本返回時,執行trap`設置的命令
- DEBUG:在任何命令執行前執行trap設置的命令,但對于函數僅在函數的第一條命令前執行一次
- ERR:在命令結果為非0時,執行trap設置的命令
執行結果
andrew@andrew-Thurley:/work/linux-sys/bash/2.基本/src$ bash trap_func.sh before a func iis called before a func iis called call . before a func iis called . or source is called before a func iis called 不管你信不信,這是一個函數- trap -l:列出所有信號的數值和名字,類似于kill -l
- trap -p:列出通過trap設置過的信號處理命令
注意
- 在函數中設置的trap也是全局生效的
- 對于同一個信號,只有最后一次trap生效
- trap只在本進程內有效,它的子進程不會繼承trap的設置。
使用trap設計一個用于反應程序執行過程的腳本
#!/bin/bash # 使用trap來捕捉變量值.# EXIT代表在函數退出前,執行trap trap 'echo Variable Listing --- ret=${ret}' EXITps -A if [ $? == 0 ];thenecho "commond exec OK!"ret=0 elseret=1 fiecho "注意這里,還沒有調用trap"# trap是在退出的時候清理程序時調用的 exit 0關注,沒有廣告,還能要資料
總結
以上是生活随笔為你收集整理的trap--shell脚本调试的不二人选的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发现大数据产业创新黑马,CBDS2016
- 下一篇: shell--变量的替换