Shell特殊變量:Shell $#、$*、$@、$?、$$

$n,它是特殊變量的一種,用來接收位置參數。本節我們繼續講解剩下的幾個特殊變量,它們分別是:$#、$*、$@、$?、$$。
 

Shell 特殊變量及其含義
變量 含義
$0 當前腳本的文件名。
$n(n≥1) 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是 $1,第二個參數是 $2。
$# 傳遞給腳本或函數的參數個數。
$* 傳遞給腳本或函數的所有參數。
$@ 傳遞給腳本或函數的所有參數。當被雙引號" "包含時,$@ 與 $* 稍有不同,我們將在《Shell $*和$@的區別》一節中詳細講解。
$? 上個命令的退出狀態,或函數的返回值,我們將在《Shell $?》一節中詳細講解。
$$ 當前 Shell 進程 ID。對於 Shell 腳本,就是這些腳本所在的進程 ID。


下面我們通過兩個例子來演示。

1) 給腳本文件傳遞參數

編寫下面的代碼,並保存爲 test.sh:


 
  1. #!/bin/bash
  2.  
  3. echo "Process ID: $$"
  4. echo "File Name: $0"
  5. echo "First Parameter : $1"
  6. echo "Second Parameter : $2"
  7. echo "All parameters 1: $@"
  8. echo "All parameters 2: $*"
  9. 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:

純文本複製

 
  1. #!/bin/bash
  2.  
  3. #定義函數
  4. function func(){
  5. echo "Language: $1"
  6. echo "URL: $2"
  7. echo "First Parameter : $1"
  8. echo "Second Parameter : $2"
  9. echo "All parameters 1: $@"
  10. echo "All parameters 2: $*"
  11. echo "Total: $#"
  12. }
  13.  
  14. #調用函數
  15. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章