概述
今天主要介紹下shell腳本中shift的一些用法,這個命令還是相對比較少見的。
一、shift介紹
shift命令用于對參數的移動(左移),通常用于在不知道傳入參數個數的情況下依次遍歷每個參數然后進行相應處理(常見于Linux中各種程序的啟動腳本)。
簡而言之,shift命令表示參數向左偏移,后面可跟數字(數字大小在參數個數范圍內)
二、實驗
1、依次讀取輸入的參數并打印參數個數:
#!/bin/bashwhile [ $# != 0 ];doecho "第一個參數為:$1,參數個數為:$#"shiftdone
輸出結果:
./run.sh a b c d e f
從上可知 shift(shift 1) 命令每執行一次,變量的個數($#)減一
(之前的$1變量被銷毀,之后的$2就變成了$1),而變量值提前一位。
同理,shift n后,前n位參數都會被銷毀。
2、測試shift n
#!/bin/bashecho "參數個數為:$#,其中:"for i in $(seq 1 $#)do eval j=$$i echo "第$i個參數($"$i"):$j"doneshift 3 echo "執行shift 3操作后:"echo "參數個數為:$#,其中:"for i in $(seq 1 $#)do #通過eval把i變量的值($i)作為變量j的名字 eval j=$$i echo "第$i個參數($"$i"):$j"done
輸出結果:
./shift.sh a b c d e f
后面會分享更多devops和DBA方面內容,感興趣的朋友可以關注下~