今天主要介紹下shell腳本中shift的一些用法,這個命令還是相對比較少見的。
shift命令用於對參數的移動(左移),通常用於在不知道傳入參數個數的情況下依次遍歷每個參數然後進行相應處理(常見於Linux中各種程序的啟動腳本)。
簡而言之,shift命令表示參數向左偏移,後面可跟數字(數字大小在參數個數範圍內)
1、依次讀取輸入的參數並列印參數個數:
#!/bin/bash
while [ $# != 0 ];do
echo "第一個參數為:$1,參數個數為:$#"
shift
done
輸出結果:
./run.sh a b c d e f
從上可知 shift(shift 1) 命令每執行一次,變量的個數($#)減一
(之前的$1變量被銷毀,之後的$2就變成了$1),而變量值提前一位。
同理,shift n後,前n位參數都會被銷毀。
2、測試shift n
#!/bin/bash
echo "參數個數為:$#,其中:"
for i in $(seq 1 $#)
do
eval j=\\$$i
echo "第$i個參數($"$i"):$j"
done
shift 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方面內容,感興趣的朋友可以關注下~