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

Shell位置參數(命令行參數)

我們先來說一下 Shell 位置參數是怎么回事。

運行 Shell 腳本文件時我們可以給它傳遞一些參數,這些參數在腳本文件內部可以使用$n的形式來接收,例如,$1 表示第一個參數,$2 表示第二個參數,依次類推。

同樣,在調用函數時也可以傳遞參數。Shell 函數參數的傳遞和其它編程語言不同,沒有所謂的形參和實參,在定義函數時也不用指明參數的名字和數目。換句話說,定義 Shell 函數時不能帶參數,但是在調用函數時卻可以傳遞參數,這些傳遞進來的參數,在函數內部就也使用$n的形式接收,例如,$1 表示第一個參數,$2 表示第二個參數,依次類推。

這種通過$n的形式來接收的參數,在 Shell 中稱為位置參數。

在講解變量的命名時,我們提到:變量的名字必須以字母或者下劃線開頭,不能以數字開頭;但是位置參數卻偏偏是數字,這和變量的命名規則是相悖的,所以我們將它們視為“特殊變量”。

除了 $n,Shell 中還有 $#、$*、$@、$?、$$ 幾個特殊參數,我們將在下節講解。

1) 給腳本文件傳遞位置參數

請編寫下面的代碼,并命名為 test.sh:
#!/bin/bash

echo "Language: $1"
echo "URL: $2"
運行 test.sh,并附帶參數:

$ . ./a.sh Shell http://www.frifeb11.com/shell/

運行結果:
Language: Shell
URL: http://www.frifeb11.com/shell/

其中Shell是第一個位置參數,http://www.frifeb11.com/shell/是第二個位置參數。

2) 給函數傳遞位置參數

請編寫下面的代碼,并命名為 test.sh:
#!/bin/bash

#定義函數
function func(){
    echo "Language: $1"
    echo "URL: $2"
}

#調用函數
func C++ http://www.frifeb11.com/cplus/
運行 test.sh:

$ . ./a.sh

運行結果:
Language: C++
URL: http://www.frifeb11.com/cplus/

關于函數定義和調用的具體語法,后續我們還會詳細講解,這里大家了解一下即可。

注意事項

如果參數個數太多,達到或者超過了 10 個,那么就得用${n}的形式來接收了,例如 ${10}、${23}。{ }的作用是為了幫助解釋器識別參數的邊界,這跟使用變量時加{ }是一樣的效果。

下節展望

在 Shell 中,傳遞位置參數時除了能單獨取得某個具體的參數,還能取得所有參數的列表,以及參數的個數等信息,下節我們將會詳細講解。

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

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

底部Logo
极速pk10开户