$# 是傳給腳本的參數個數
$
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

