linux中shift用法,Linux shell腳本中shift的用法說明

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個參數: abcde

那么$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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值