C語言中文網 目錄
首頁 > Shell腳本 閱讀:7,386

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

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

Shell 特殊變量及其含義
變量 含義
$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,并附帶參數:

$ chmod +x ./a.sh
$ ./test.sh Shell Linux

運行結果為:
Process ID: 2788
File Name: ./test.sh
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://www.frifeb11.com/java/
運行結果為:
Language: Java
URL: http://www.frifeb11.com/java/
First Parameter : Java
Second Parameter : http://www.frifeb11.com/java/
All parameters 1: Java http://www.frifeb11.com/java/
All parameters 2: Java http://www.frifeb11.com/java/
Total: 2

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo