在linux下配置shell參數說明linux
前面已經講到,變量名只能包含數字、字母和下劃線,由於某些包含其餘字符的變量有特殊含義,這樣的變量被稱爲特殊變量。
例如,$ 表示當前Shell進程的ID,即pid,看下面的代碼:shell
- $echo $$
運行結果bash
29949
變量
含義函數
$0
當前腳本的文件名命令行
$n
傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。進程
$#
傳遞給腳本或函數的參數個數。test
$*
傳遞給腳本或函數的全部參數。變量
$@
傳遞給腳本或函數的全部參數。被雙引號(" ")包含時,與 $* 稍有不一樣,下面將會講到。配置
$?
上個命令的退出狀態,或函數的返回值。腳本
$$
當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。
- #!/bin/bash
- echo "File Name: $0"
- echo "First Parameter : $1"
- echo "First Parameter : $2"
- echo "Quoted Values: $@"
- echo "Quoted Values: $*"
- echo "Total Number of Parameters : $#"
運行結果:
$./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2
- #!/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 \"\$@\""
- for var 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
$./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2 $echo $? 0 $$? 也能夠表示函數的返回值,後續將會講解