shift命令

#位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。


#测试 shift 命令(x_shift3.sh)

[root@linux-server script]# cat x_shift3.sh  

#!/bin/bash

shift

echo "第一个位置参数: $1"

[root@linux-server script]# bash x_shift3.sh 2 3  

第一个位置参数: 3


若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等,则需要用shift把所有参数变成$1

#测试 shift 命令(x_shift.sh)  

[root@linux-server script]# vim x_shift.sh

#!/bin/bash

until [ $# -eq 0 ]

do

echo "第一个参数为: $1 参数个数为: $#"  

shift

done

执行以上程序:  

[root@linux-server script]# bash x_shift3.sh 1 2 3 4

结果显示如下:

第一个参数为: 1 参数个数为: 4  

第一个参数为: 2 参数个数为: 3  

第一个参数为: 3 参数个数为: 2  

第一个参数为: 4 参数个数为: 1


从上可知 shift 命令每执行一次,变量的个数($#)减一,而变量值提前一位