1、shift 移開第一個參數
2、$# 提供傳遞到shell指令碼或函數的參數總數。
while [$# != 0] 以shift逐漸減少$#,迴圈將會終止
do
case $1 in
esac
shift
done
3、$*, $@
一次表示所有的命令列參數。這兩個參數可用來把命令列參數傳遞給指令碼或者函數所執行的程式。
“$*”將所有的命令列參數視為單個字串,等同於“$1 $2 ...”.
$IFS的第一個字元用來做為分隔字元,以分隔不同的值來建立字串
例如:
IFS="123"
printf "The arguments were %s/n" "$*"
$./aa a b c
輸出:The arguments were a1b1c
$@
將所有的命令列參數視為單獨的個體也就是單獨的字串。等同於“$1” "$2" ...
printf "The arguments were %s/n" "$@"
$./aa a b c
輸出:
The arguments were a
The arguments were b
The arguments were c
4、POSIX內建shell變數
# 目前進程的參數個數。
@ 傳遞給當前進程的命令列參數,至於雙引號內,會展開為個別的參數。
* 當前進程命令列參數。置於雙引號內,則展開為一單獨參數。
-(連字號) 在引用時給予Shell的選項。
? 前一命令的退出狀態。 echo $? 輸出退出碼。
$ shell進程的進程編號(process ID)。
0 shell程式的名稱。
! 最近一個後台命令的進程編號,以此方式儲存進程編號,可通過wait命令以供稍後使用。
ENV 一旦使用,則僅用於互動式shell中,$ENV的值是可展開的擦書。結果應為要讀取和在啟動時要執行的一個檔案的完整路徑名稱。這是一個XSI必需的變數。
HOME 根(登入)目錄
IFS 內部欄位分隔器;例如作為單詞分隔器的字元列表。一般設為空白格、定位字元(Tab),以及分行符號(newline)。
LANG 當前locale的預設名稱;其他的LC_*變數會覆蓋其值。
PATH 命令的尋找路徑。
PPID 父進程的進程編號。
4、$? 最後一次退出的狀態代碼
0 命令成功退出
>0 重新導向或單詞展開期間失敗
1-125 命令不成功的退出
126 命令找到了,單檔案無法執行
127 命令找不到
128 命令收到訊號而死亡