首页 > 代码库 > Shell编程中Shift的用法

Shell编程中Shift的用法

Shell编程中Shift的用法

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

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

  (2) name[index] = value

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

#!/bin/shuntil [ $# -eq 0 ]doecho "第一个参数为: $1 参数个数为: $#"shiftdone

执行以上程序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/shif [ $# -eq 0 ]thenecho "Usage:x_shift2.sh 参数"exit 1fisum=0until [ $# -eq 0 ]dosum=`expr $sum + $1`shiftdoneecho "sum is: $sum"

 

执行上述程序:

 

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

 

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

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