天天看點

shell入門第五講

1、位置變量

位置變量指的是腳本(或者函數)後跟的第n個參數。我們這裡暫時先讨論腳本傳參的用法。

位置變量需要使用到形如 $1、$2、$3、$4、$5、$6。其中$1表示第一個參數,$2表示第二個參數,依次往後類推即可,我們來看看使用效果。

1.1、簡單的腳本參數傳遞

先寫個簡單的腳本

bash [root@localhost ~]# cat test.sh !/bin/bash echo "第一個參數:$1" echo "第二個參數:$2" echo "第三個參數:$3"

我們寫了這樣的一個腳本,一共是傳入三個參數,然後在腳本裡面分别引用三個參數的值,現在來執行一下。

注意先賦予x權限

bash [root@localhost ~]# ./test.sh 11 22 33 第一個參數:11 第二個參數:22 第三個參數:33

我們使用 ./ 執行的時候,分别在腳本後面傳入11、22、33這三個數值,然後在腳本内部我們已經提前定義好了引用變量,那麼在執行的時候就可以把三個參數的值列印出來。

1.2、位置變量控制

使用shift關鍵字可以實作對位置變量的控制,比如我們寫個腳本

bash [root@localhost ~]# cat test.sh !/bin/bash echo "第一個參數:$1" shift echo "第二個參數:$2" echo "第三個參數:$3"

現在來執行一下,這次我們傳入四個參數

bash [root@localhost ~]# ./test.sh 11 22 33 44 第一個參數:11 第二個參數:33 第三個參數:44

喔?我們發現列印的結果中,第二個參數居然是33,然而我們傳參的時候的22這個參數并沒有引用到,這就是shift的作用,每執行依次shift指令,位置變量個數就會減一,而變量值則提前一位。

當然也可以設定移動n位,我們不必寫上n個shift指令,而直接使用shift n即可,比如:

bash [root@localhost ~]# cat test.sh !/bin/bash shift 3 echo "第一個參數:$1" echo "第二個參數:$2" echo "第三個參數:$3"

再來執行一下

bash [root@localhost ~]# ./test.sh 11 22 33 44 55 66 第一個參數:44 第二個參數:55 第三個參數:66

使用shift n,那麼位置變量向前移動n位,是以我們的結果是從第四個參數開始引用的,大家都學會了嘛?

1.3、注意事項

當然小夥伴可能會問 $0 表示什麼呢?我們來執行一下看看,還是先寫個腳本

bash [root@localhost ~]# cat test.sh !/bin/bash echo "第0個參數:$0" echo "第一個參數:$1" echo "第二個參數:$2" echo "第三個參數:$3"

執行一下看看

bash [root@localhost ~]# ./test.sh 11 22 33 第0個參數:./test.sh 第一個參數:11 第二個參數:22 第三個參數:33

或者使用bash執行看看

bash 第三個參數:33 [root@localhost ~]# bash test.sh 11 22 33 第0個參數:test.sh 第一個參數:11 第二個參數:22 第三個參數:33

發現他們兩個共同點就是,$0表示執行的檔案名本身,我想這裡大家應該都明白了吧?

還有一個注意點就是:我們使用$1、$2…像這樣的傳遞的參數引用時,從第10個開始我們要加上花括号來調用,比如:${10}、${11},一定要加上花括号!!!

文章轉載于馬哥教育官網;http://www.magedu.com/83989.html