日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux shell脚本中shift的用法说明

發布時間:2025/3/15 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux shell脚本中shift的用法说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:https://blog.csdn.net/zhu_xun/article/details/24796235?

shift命令用于對參數的移動(左移),通常用于在不知道傳入參數個數的情況下依次遍歷每個參數然后進行相應處理(常見于Linux中各種程序的啟動腳本)。

示例1:依次讀取輸入的參數并打印參數個數:
run.sh:
#!/bin/bash
while [ $# != 0 ];do
echo "第一個參數為:$1,參數個數為:$#"
shift
done

輸入如下命令運行:run.sh a b c d e f

結果顯示如下:
第一個參數為:a,參數個數為:6
第一個參數為:b,參數個數為:5
第一個參數為:c,參數個數為:4
第一個參數為:d,參數個數為:3
第一個參數為:e,參數個數為:2
第一個參數為:f,參數個數為:1

從上可知 shift(shift 1) 命令每執行一次,變量的個數($#)減一(之前的$1變量被銷毀,之后的$2就變成了$1),而變量值提前一位。

同理,shift n后,前n位參數都會被銷毀,比如:

輸入5個參數: abcd e

那么$1=a,$2=b,$3=c,$4=d,$5=e,執行shift 3操作后,前3個參數a、b、c被銷毀,就剩下了2個參數:d,e(這時d=$1,e=$2,其中d由$4—>$1,e由$5—>$2),參考示例如下:

示例2:

#!/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

輸出結果為:
參數個數為:5,其中:
第1個參數($1):a
第2個參數($2):b
第3個參數($3):c
第4個參數($4):d
第5個參數($5):e
執行shift 3操作后:
參數個數為:2,其中:
第1個參數($1):d
第2個參數($2):e


?

總結

以上是生活随笔為你收集整理的Linux shell脚本中shift的用法说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。