前面讲特殊变量的时候,提到过位置参数。执行命令set102030后,位置参数的值为$1=10,$2=20,$3=30,参数个数$#=3,利用特殊变量$#和内置命令shift可以对位置参数进行循环。命令shift用来左移位置参数,默认左移一个,就是将原来的$1废弃,将$2的值赋给$1,$3的值赋给$2,等等,然后将位置参数的个数减1。shiftN表示左移N个,就是将原来的$1到$N废弃,将${N+1}的值赋给$1,将${N+2}的值赋给$2,等等,然后将位置参数的个数减N。看个例子就清楚了。
脚本while_shift_1.sh,在while循环开始之前,$#=3,$1=10,$2=20,$3=30。接着,在循环里面打印出$1的值(10);然后运行shift,位置参数左移,$#=2,$1=20,$2=30,在循环里面打印出$1的值(20);然后运行shift,位置参数左移,$#=1,$1=30,在循环里面打印出$1的值(30);然后运行shift,位置参数左移,$#=0,while循环的条件——“$#大于0”不再满足,循环结束。脚本执行结果如下:
$1的值在while循环进行时依次变为10、20和30,见表6-1。
表6-1 位置参数值的变化
在脚本while_shift_1.sh的基础上,将shift改为shift2,即,每次左移两个参数,得到脚本while_shift_2.sh:
(www.xing528.com)
执行该脚本,在其后面跟上6个参数,10到60,结果如下:
因为每次左移两个参数,所以,6个参数只有3个显示出来。
在while循环里面增加对$#值的显示,得到脚本while_shift_3.sh:
执行该脚本,在其后面跟上6个参数,10到60,结果如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。