它有三種形式分别對應三種不同的信号回應方式.
第一種:
trap 'commands' signal-list 當腳本收到signal-list清單内列出的信号時,trap指令執行雙引号中的指令.
第二種:
trap signal-list
trap 不指定任何指令,接受信号的預設操作.預設操作是結束程序的運作.
第三種:
trap ' ' signal-list
trap 指令指定一個空指令串,允許忽視信号.
NOTE:trap 對同種signal隻能相應一種設定,如果在一個shell裡面設定多個trap,那麼它隻會響應最後一個信号設定。
如:
trap ' echo “aaaaaaaaaaa” ' INT
trap ' echo “bbbbbbbbbbb” ' INT
那麼它隻會響應最後一個信号設定。
如下X/Open規範裡面規定的能夠被捕獲的比較重要的一些信号(括号裡面的數字是傳統的信号編号)
trap指令常見的用途在于腳本程式中斷時完成清理工作,比如臨時檔案等.
trap指令舉例
eg 1:
[[email protected] ~]# trap "echo aaaaaa" 2
[[email protected] ~]# ^Caaaaaa ==》執行ctrl+c,捕獲到信号2,将執行列印
eg 2: 如果遇到INT中斷,即Ctrl+c,即删除該檔案
#!/bin/bash
trap 'rm -f /tmp/my_tmp_file_$$' INT
echo "creating file /tmp/my_tmp_file_$$"
date > /tmp/my_tmp_file_$$
echo "press interrupt (CTRL-C) to interrupt ......"
while [ -f /tmp/my_tmp_file_$$ ];
do
echo "File exists"
sleep 3
done
echo" we never get here"
exit 0