當(dāng)前位置:
首頁 >
trap--shell脚本调试的不二人选
發(fā)布時(shí)間:2025/3/15
40
豆豆
生活随笔
收集整理的這篇文章主要介紹了
trap--shell脚本调试的不二人选
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
trap簡介
trap的格式如下,功能就是捕捉信號(hào),并對(duì)信號(hào)進(jìn)行處理
trap [-lp] [[arg] sigspec ...]- arg可以是shell命令或者自定義函數(shù)
- sigspec可以是以下的一個(gè)或多個(gè)
- 定義在<signal.h>中的信號(hào)名或者數(shù)值。信號(hào)名的大小寫不敏感,SIG這個(gè)前綴也是可選的。以下的命令的效果都是一樣的
調(diào)試腳本時(shí),trap經(jīng)常用到的信號(hào)量
- EXIT:在shell退出前執(zhí)行trap設(shè)置的命令,也可以指定為0
- RETURN:在.和``source執(zhí)行其他腳本返回時(shí),執(zhí)行trap`設(shè)置的命令
- DEBUG:在任何命令執(zhí)行前執(zhí)行trap設(shè)置的命令,但對(duì)于函數(shù)僅在函數(shù)的第一條命令前執(zhí)行一次
- ERR:在命令結(jié)果為非0時(shí),執(zhí)行trap設(shè)置的命令
執(zhí)行結(jié)果
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 不管你信不信,這是一個(gè)函數(shù)- trap -l:列出所有信號(hào)的數(shù)值和名字,類似于kill -l
- trap -p:列出通過trap設(shè)置過的信號(hào)處理命令
注意
- 在函數(shù)中設(shè)置的trap也是全局生效的
- 對(duì)于同一個(gè)信號(hào),只有最后一次trap生效
- trap只在本進(jìn)程內(nèi)有效,它的子進(jìn)程不會(huì)繼承trap的設(shè)置。
使用trap設(shè)計(jì)一個(gè)用于反應(yīng)程序執(zhí)行過程的腳本
#!/bin/bash # 使用trap來捕捉變量值.# EXIT代表在函數(shù)退出前,執(zhí)行trap trap 'echo Variable Listing --- ret=${ret}' EXITps -A if [ $? == 0 ];thenecho "commond exec OK!"ret=0 elseret=1 fiecho "注意這里,還沒有調(diào)用trap"# trap是在退出的時(shí)候清理程序時(shí)調(diào)用的 exit 0關(guān)注,沒有廣告,還能要資料
總結(jié)
以上是生活随笔為你收集整理的trap--shell脚本调试的不二人选的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发现大数据产业创新黑马,CBDS2016
- 下一篇: shell--变量的替换