shell中$0, $#, $*, $@, $?, $$的含義
$0 當前腳本的文件名
$n 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。
$# 傳遞給腳本或函數的參數個數。
$* 傳遞給腳本或函數的所有參數。
$@ 傳遞給腳本或函數的所有參數。
$? 上個命令的退出狀態,或函數的返回值。
$$ 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。
$! Shell最后運行的后台Process的PID
$- 顯示Shell使用的當前選項,與set命令功能相同。
$* 和 $@ 的區別
$* 和 $@ 都表示傳遞給函數或腳本的所有參數,
不被雙引號(" “)包含時,都以”$1" “2"…"2"…"n” 的形式輸出所有參數
當它們被雙引號(" “)包含時,”$*" 會將所有的參數作為一個整體,以"$1 $2 … n"的形式輸出所有參數;
"n"的形式輸出所有參數;"@" 會將各個參數分開,以"$1" “2"…"2"…"n” 的形式輸出所有參數。