$n,它是特殊變量的一種,用來接收位置參數。本節我們繼續講解剩下的幾個特殊變量,它們分別是:$#、$*、$@、$?、$$。
變量 | 含義 |
---|---|
$0 | 當前腳本的文件名。 |
$n(n≥1) | 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是 $1,第二個參數是 $2。 |
$# | 傳遞給腳本或函數的參數個數。 |
$* | 傳遞給腳本或函數的所有參數。 |
$@ | 傳遞給腳本或函數的所有參數。當被雙引號" " 包含時,$@ 與 $* 稍有不同,我們將在《Shell $*和$@的區別》一節中詳細講解。 |
$? | 上個命令的退出狀態,或函數的返回值,我們將在《Shell $?》一節中詳細講解。 |
$$ | 當前 Shell 進程 ID。對於 Shell 腳本,就是這些腳本所在的進程 ID。 |
下面我們通過兩個例子來演示。
1) 給腳本文件傳遞參數
編寫下面的代碼,並保存爲 test.sh:
- #!/bin/bash
- echo "Process ID: $$"
- echo "File Name: $0"
- echo "First Parameter : $1"
- echo "Second Parameter : $2"
- echo "All parameters 1: $@"
- echo "All parameters 2: $*"
- echo "Total: $#"
運行 test.sh,並附帶參數:
[mozhiyan@localhost demo]$ . ./test.sh Shell Linux Process ID: 5943 File Name: bash First Parameter : Shell Second Parameter : Linux All parameters 1: Shell Linux All parameters 2: Shell Linux Total: 2
2) 給函數傳遞參數
編寫下面的代碼,並保存爲 test.sh:
純文本複製
- #!/bin/bash
- #定義函數
- function func(){
- echo "Language: $1"
- echo "URL: $2"
- echo "First Parameter : $1"
- echo "Second Parameter : $2"
- echo "All parameters 1: $@"
- echo "All parameters 2: $*"
- echo "Total: $#"
- }
- #調用函數
- func Java http://c.biancheng.net/java/
運行結果爲:
Language: Java
URL: http://c.biancheng.net/java/
First Parameter : Java
Second Parameter : http://c.biancheng.net/java/
All parameters 1: Java http://c.biancheng.net/java/
All parameters 2: Java http://c.biancheng.net/java/
Total: 2