您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)使用linux的shift命令移動(dòng)位置參數(shù),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
shift命令用于對(duì)參數(shù)的移動(dòng)(左移),通常用于在不知道傳入?yún)?shù)個(gè)數(shù)的情況下依次遍歷每個(gè)參數(shù)然后進(jìn)行相應(yīng)處理(常見于Linux中各種程序的啟動(dòng)腳本)。
對(duì)于某個(gè)命令行參數(shù),其參數(shù)個(gè)數(shù)可以不固定,但是可以通過$*或$@進(jìn)行循環(huán)操作。若用戶要求Shell在不知道變量個(gè)數(shù)的情況下,還能逐個(gè)處理參數(shù),也就是在$1之后是$2,$2之后是$3。在未運(yùn)行shift命令之前$1是可用的,當(dāng)使用shift命令之后,原來的$2會(huì)變成$1,并且原有的$1變得不可用,通過$#命令獲得的參數(shù)個(gè)數(shù)也會(huì)少1。
語法格式:shift [參數(shù)]
常用參數(shù):
參考實(shí)例
依次讀取輸入的參數(shù)并打印參數(shù)個(gè)數(shù):
run.sh 內(nèi)容如下:
#!/bin/bash while [ $# != 0 ];do echo "第一個(gè)參數(shù)為:$1,參數(shù)個(gè)數(shù)為:$#" shift done 輸入如下命令運(yùn)行:run.sh a b c d e f 結(jié)果顯示如下:第一個(gè)參數(shù)為:a,參數(shù)個(gè)數(shù)為:6 第一個(gè)參數(shù)為:b,參數(shù)個(gè)數(shù)為:5 第一個(gè)參數(shù)為:c,參數(shù)個(gè)數(shù)為:4 第一個(gè)參數(shù)為:d,參數(shù)個(gè)數(shù)為:3 第一個(gè)參數(shù)為:e,參數(shù)個(gè)數(shù)為:2 第一個(gè)參數(shù)為:f,參數(shù)個(gè)數(shù)為:1
把參數(shù)進(jìn)行左移3個(gè):
#!/bin/bash echo -e "./t.sh arg1 arg2 arg3 arg4 arg5 arg6" str1="${1},${2},${3}" echo "str1=$str1" shift 3 str2=$@ echo "str2=$str2" sh t.sh 1 2 3 4 5 6 7 str1=1,2,3
將參數(shù)從左到右逐個(gè)移動(dòng):
[root@linuxcool ~]# cat shift.sh #!/bin/bash while [ $# -ne 0 ] do echo "第一個(gè)參數(shù)為: $1 參數(shù)個(gè)數(shù)為: $#" shift done [root@linuxcool ~]# sh shift.sh Lily Lucy Jake Mike 第一個(gè)參數(shù)為: Lily 參數(shù)個(gè)數(shù)為: 4 第一個(gè)參數(shù)為: Lucy 參數(shù)個(gè)數(shù)為: 3 第一個(gè)參數(shù)為: Jake 參數(shù)個(gè)數(shù)為: 2 第一個(gè)參數(shù)為: Mike 參數(shù)個(gè)數(shù)為: 1
關(guān)于使用linux的shift命令移動(dòng)位置參數(shù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。