Shell特殊變量:Shell $0, $#, $*, $@, $?, $$和命令行參數
阿新 • • 發佈:2018-04-06
body int 腳本 一個數 color $* 部分 所在 bash
Shell特殊變量:Shell $0, $#, $*, $@, $?, $$和命令行參數 特殊變量列表 變量 含義 $0 當前腳本的文件名 $n 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。 $# 傳遞給腳本或函數的參數個數。 $* 傳遞給腳本或函數的所有參數。 $@ 傳遞給腳本或函數的所有參數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到。 $? 上個命令的退出狀態,或函數的返回值。一般情況下,大部分命令執行成功會返回 0,失敗返回 1。 $$ 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。 $* 和 $@ 的區別 $* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。 但是當它們被雙引號(" ")包含時,"$*" 會將所有的參數作為一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。 下面的例子可以清楚的看到 $* 和 $@ 的區別: #!/bin/bash echo "\$*=" $* echo "\"\$*\"=" "$*" echo "\$@=" $@ echo "\"\$@\"=" "$@" echo "print each param from \$*" for var in $* do echo "$var" done echo "print each param from \$@" for var in $@ do echo "$var" done echo "print each param from \"\$*\"" for var in "$*" do echo "$var" done echo "print each param from \"\$@\"" forvar in "$@" do echo "$var" done 執行 ./test.sh "a" "b" "c" "d",看到下面的結果: $*= a b c d "$*"= a b c d $@= a b c d "$@"= a b c d print each param from $* a b c d print each param from $@ a b c d print each param from "$*" a b c d print each param from "$@" a b c d 說明:雙引號包含時,"$*"的參數被當做一個整體,而"$@"還是遍歷每一個參數
Shell特殊變量:Shell $0, $#, $*, $@, $?, $$和命令行參數