shell入門第五講
1、位置變量
位置變量指的是腳本(或者函數(shù))后跟的第n個(gè)參數(shù)。我們這里暫時(shí)先討論腳本傳參的用法。
位置變量需要使用到形如 $1、$2、$3、$4、$5、$6。其中$1表示第一個(gè)參數(shù),$2表示第二個(gè)參數(shù),依次往后類推即可,我們來看看使用效果。
1.1、簡單的腳本參數(shù)傳遞
先寫個(gè)簡單的腳本bash [root@localhost ~]# cat test.sh!/bin/bashecho "第一個(gè)參數(shù):$1" echo "第二個(gè)參數(shù):$2" echo "第三個(gè)參數(shù):$3"
我們寫了這樣的一個(gè)腳本,一共是傳入三個(gè)參數(shù),然后在腳本里面分別引用三個(gè)參數(shù)的值,現(xiàn)在來執(zhí)行一下。
注意先賦予x權(quán)限
bash [root@localhost ~]# ./test.sh 11 22 33 第一個(gè)參數(shù):11 第二個(gè)參數(shù):22 第三個(gè)參數(shù):33
我們使用 ./ 執(zhí)行的時(shí)候,分別在腳本后面?zhèn)魅?1、22、33這三個(gè)數(shù)值,然后在腳本內(nèi)部我們已經(jīng)提前定義好了引用變量,那么在執(zhí)行的時(shí)候就可以把三個(gè)參數(shù)的值打印出來。
1.2、位置變量控制
使用shift關(guān)鍵字可以實(shí)現(xiàn)對位置變量的控制,比如我們寫個(gè)腳本bash [root@localhost ~]# cat test.sh!/bin/bashecho "第一個(gè)參數(shù):$1" shift echo "第二個(gè)參數(shù):$2" echo "第三個(gè)參數(shù):$3"
現(xiàn)在來執(zhí)行一下,這次我們傳入四個(gè)參數(shù)
bash [root@localhost ~]# ./test.sh 11 22 33 44 第一個(gè)參數(shù):11 第二個(gè)參數(shù):33 第三個(gè)參數(shù):44
喔?我們發(fā)現(xiàn)打印的結(jié)果中,第二個(gè)參數(shù)居然是33,然而我們傳參的時(shí)候的22這個(gè)參數(shù)并沒有引用到,這就是shift的作用,每執(zhí)行依次shift命令,位置變量個(gè)數(shù)就會減一,而變量值則提前一位。
當(dāng)然也可以設(shè)置移動n位,我們不必寫上n個(gè)shift命令,而直接使用shift n即可,比如:bash [root@localhost ~]# cat test.sh!/bin/bashshift 3 echo "第一個(gè)參數(shù):$1" echo "第二個(gè)參數(shù):$2" echo "第三個(gè)參數(shù):$3"
再來執(zhí)行一下
bash [root@localhost ~]# ./test.sh 11 22 33 44 55 66 第一個(gè)參數(shù):44 第二個(gè)參數(shù):55 第三個(gè)參數(shù):66
使用shift n,那么位置變量向前移動n位,因此我們的結(jié)果是從第四個(gè)參數(shù)開始引用的,大家都學(xué)會了嘛?
1.3、注意事項(xiàng)
當(dāng)然小伙伴可能會問 $0 表示什么呢?我們來執(zhí)行一下看看,還是先寫個(gè)腳本bash [root@localhost ~]# cat test.sh!/bin/bashecho "第0個(gè)參數(shù):$0" echo "第一個(gè)參數(shù):$1" echo "第二個(gè)參數(shù):$2" echo "第三個(gè)參數(shù):$3"
執(zhí)行一下看看
bash [root@localhost ~]# ./test.sh 11 22 33 第0個(gè)參數(shù):./test.sh 第一個(gè)參數(shù):11 第二個(gè)參數(shù):22 第三個(gè)參數(shù):33
或者使用bash執(zhí)行看看
bash 第三個(gè)參數(shù):33 [root@localhost ~]# bash test.sh 11 22 33 第0個(gè)參數(shù):test.sh 第一個(gè)參數(shù):11 第二個(gè)參數(shù):22 第三個(gè)參數(shù):33
發(fā)現(xiàn)他們兩個(gè)共同點(diǎn)就是,$0表示執(zhí)行的文件名本身,我想這里大家應(yīng)該都明白了吧?
還有一個(gè)注意點(diǎn)就是:我們使用$1、$2…像這樣的傳遞的參數(shù)引用時(shí),從第10個(gè)開始我們要加上花括號來調(diào)用,比如:${10}、${11},一定要加上花括號!!!