$# 是傳給腳本的參數個數
$
0
是腳本本身的名字
$
1
是傳遞給該shell腳本的第一個參數
$
2
是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過
9
個
$$ 是腳本運行的當前進程ID號
$? 是顯示最后命令的退出狀態,
0
表示沒有錯誤,其他表示有錯誤
區別:$@, $*
相同點:都是引用所有參數
不同點:$* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。但是當它們被雙引號(" ")包含時,"$*" 會將所有的參數作為一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。
#!/bin/bash echo "-----------------" for key in "$@" do echo '$@' $key done echo "-----------------------------" for key2 in $* do echo '$*' $key2 done 1、帶引號執行及結果: [root@localhost ~]# bash file.sh linux "python c" ----------------- $@ linux $@ python c ----------------------------- $* linux $* python $* c 2、不帶引號執行及結果: [root@localhost ~]# bash file.sh linux python c ----------------- $@ linux $@ python $@ c ----------------------------- $* linux $* python $* c