位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成了$1,原来的$5现在变成了$2,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。
非常有用的Unix命令:shift。我们知道,对于位置变量或者命令参数,其个数必须是确定的,或者当shell程序不知道其个数时,可以把所有参数一起赋值变量$*。左路用户要求Shell在不知道位置变量个数的情况下,还能逐个的把参数—处理,也就是在$1后为$2,在$2后面为$3等。在shfit命令执行前变量$1的值在shift命令执行后就不可用了。
例子一:
#!/bin/bash
until [ $# -eq 0 ]
do
echo "The first parameter:$1 number is:$#"
shift
done
例子二:
#!/bin/bash
if [ $# -eq 0 ]
then
echo "Usage:a2.sh parameter"
exit 1
fi
sum=0
until [ $# -eq 0 ]
do
sum=`expr $sum + $1`
shift
done
echo "sum is: $sum"
例子三:
下面以一个简单的脚本来说明,脚本内容如下:
#!/bin/sh
until [ $# -eq 0 ]
do
echo "第一个参数为: $1 参数个数为: $#"
shift
done执行以上程序x_shift.sh:
[root@AY1404171530212980a0Z test]# ./test 11 22 33 44 55 66 77
结果显示如下:
第一个参数为: 11 参数个数为: 7
第一个参数为: 22 参数个数为: 6
第一个参数为: 33 参数个数为: 5
第一个参数为: 44 参数个数为: 4
第一个参数为: 55 参数个数为: 3
第一个参数为: 66 参数个数为: 2
第一个参数为: 77 参数个数为: 1