經常使用系統變量: shell
$0 當前shell程序的名字 數據庫
$1 ~ $9 命令行上的第一到第九個參數 bash
$# 命令行上的參數個數 spa
$* 命令行上的全部參數 命令行
$@ 分別用雙引號引用命令行上的全部參數 code
$$ 當前進程的進程標識號(PID) 進程
$? 上一條命令的退出狀態 ci
$! 最後一個後臺進程的進程標識號 input
系統變量只能引用不能修改! 信 號 it |
說 明 |
HUP(1) |
掛起,一般因終端掉線或用戶退出而引起 |
INT(2) |
中斷,一般因按下Ctrl+C組合鍵而引起 |
QUIT(3) |
退出,一般因按下Ctrl+\組合鍵而引起 |
ABRT(6) |
停止,一般因某些嚴重的執行錯誤而引起 |
ALRM(14) |
報警,一般用來處理超時 |
TERM(15) |
終止,一般在系統關機時發送 |
一. trap捕捉到信號以後,能夠有三種反應方式:
二. trap對上面三種方式提供了三種基本形式:
第一種形式的trap命令在shell接收到signal list清單中數值相同的信號時,將執行雙
引號中的命令串:
trap 'commands' signal-list
trap "commands" signal-list
第二種形式的trap命令,爲了恢復信號的默認操做:
trap signal-list
第三種形式的trap命令容許忽視信號:
trap " " signal-list
在第一種形式中,執行命令,對於雙引號和單引號是有區別的。
#/bin/bash #忽略信號 #trap " " 2 #雙引號,shell第一次設置信號的時候就執行命令和變量的替換,時間不變 trap "echo `date`:can not terminate by ctrl+C" 2 #單引號,要在shell探測到信號來的時候才執行命令和變量的替換,時間一直變 trap 'echo `date`:can not terminate by ctrl+C' 2 while [ 1 ] do echo -n "input a num : " read num if [ $num -eq -1 ] then echo "bye" break fi echo "you have enter $num" done