Trap命令簡介
一、基本概念
trap是一個shell內建命令,它用來在腳本中指定信號如何處理。比如,按Ctrl+C會使腳本終止執行,實際上系統發送了SIGINT信號給腳本進程,SIGINT信號的默認處理方式就是退出程序。如果要在Ctrl +C不退出程序,那么就得使用trap命令來指定一下SIGINT的處理方式了。trap命令不僅僅處理Linux信號,還能對腳本退出(EXIT)、調試(DEBUG)、錯誤(ERR)、返回(RETURN)等情況指定處理方式。
二、基本格式
格式:trap "commands" signals
當shell接收到signals指定的信號時,執行commands命令。
1、格式:trap signals
如果沒有指定命令部分,那么就將信號處理復原。比如 trap INT 就表明恢復Ctrl+C退出
2、格式:trap "" signals
忽略信號signals,可以多個,比如 trap "" INT 表明忽略SIGINT信號,按Ctrl+C也不能使腳本退出。又如 trap "" HUP 表明忽略SIGHUP信號,即網絡斷開時也不能使腳本退出
3、格式:trap -p signal
把當前的trap設置打印出來
4、格式:trap -l
把所有信號打印出來
5、格式:trap "commands" EXIT
腳本退出時執行commands指定的命令
三、實例分析
1、寫一個腳本ping A、B、C類IP地址探測所有的主機是否在線;
說明:如果范圍為{1..255}時,執行時間比較長,此時ctrl+c中斷時無法中斷,這時我們可以使用tarp命令,當執行ctrl+c時,會執行一個命令或者行數,見例2
2、用trap實現中斷執行;
說明:此時執行ctrl+c時將調用quitScript函數,執行退出。
原創文章,作者:wxdz_2004(古雨秋),如若轉載,請注明出處:http://www.www58058.com/4199