shell脚本常用函数和命令(9)shift 详解
格式:shift num 命令用于对参数的移动(左移)多少位,默认是1位,可以移动多位。
如:shift 3 就是一次左移3位参数
#!/bin/bash
while [ $# != 0 ];do
echo "当前的第1个参数是:$1,当前参数总数是:$#"
shift
done
[root@controller1 ~]# sh myshift.sh aa bb cc dd
当前的第1个参数是:aa,当前参数总数是:4
当前的第1个参数是:bb,当前参数总数是:3
当前的第1个参数是:cc,当前参数总数是:2
当前的第1个参数是:dd,当前参数总数是:1
注:每执行一次shift,参数左移一个,参数总个数,也相应减少一个,直到参数结束,退出循环
从上可知 shift(shift 1) 命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。同理,shift n后,前n位参数都会被销毁
格式:shift num 命令用于对参数的移动(左移)多少位,默认是1位,可以移动多位。
如:shift 3 就是一次左移3位参数
1例:依次读取输入的参数并打印参数个数:
myshift.sh#!/bin/bash
while [ $# != 0 ];do
echo "当前的第1个参数是:$1,当前参数总数是:$#"
shift
done
[root@controller1 ~]# sh myshift.sh aa bb cc dd
当前的第1个参数是:aa,当前参数总数是:4
当前的第1个参数是:bb,当前参数总数是:3
当前的第1个参数是:cc,当前参数总数是:2
当前的第1个参数是:dd,当前参数总数是:1
注:每执行一次shift,参数左移一个,参数总个数,也相应减少一个,直到参数结束,退出循环
从上可知 shift(shift 1) 命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。同理,shift n后,前n位参数都会被销毁