Shell编程中Shift的用法

Shell编程中Shift的用法

Bash中,数组变量的赋值有两种方法:

  (1) name = (value1 ... valuen) 此时下标从0开始

  (2) name[index] = value

  下面以一个简单的脚本来说明,脚本内容如下:

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

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

下面代码用 until 和 shift 命令计算所有命令行参数的和。

#!/bin/sh
if [ $# -eq 0 ]
then
echo "Usage:x_shift2.sh 参数"
exit 1
fi
sum=0
until [ $# -eq 0 ]
do
sum=`expr $sum + $1`
shift
done
echo "sum is: $sum"

执行上述程序:

[root@AY1404171530212980a0Z test]# ./test2 11 22 33 44 55 66 77
sum is: 308

  Shift 命令还有另外一个重要用途, Bash 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。

  Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。

原文地址:https://www.cnblogs.com/mjorcen/p/3795480.html