首頁 > shell教程 閱讀:0更新時間:2020-03-28 02:16:36

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,并附帶參數:
[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ . ./test.sh Shell /d/file/202003/cwdvvnfefc01225
Language: Shell
URL: /d/file/202003/cwdvvnfefc01225
其中Shell是第一個位置參數,/d/file/202003/cwdvvnfefc01225是第二個位置參數,兩者之間以空格分隔。

2) 給函數傳遞位置參數

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

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

#調用函數
func C++ http://c.biancheng.net/cplus/
運行 test.sh:
[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ . ./test.sh
Language: C++
URL: http://c.biancheng.net/cplus/

關于函數定義和調用的具體語法請訪問:Shell函數定義和調用、Shell函數參數

注意事項

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

下節展望

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

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩