shift - 访问许多参数
但是当我们为程序提供大量参数时会发生什么,例如:
[我@linuxbox ~]$ 位置参数 *
参数数量:82
$0 = /home/me/bin/posit-param
$1 = 地址.ldif
$2 = 垃圾箱
$3 = 书签.html
$4 = debian-500-i386-netinst.iso
$5 = debian-500-i386-netinst.jigdo
$6 = debian-500-i386-netinst.template
$7 = debian-cd_info.tar.gz
8 美元 = 台式机
$9 = 目录-bin.txt
8 美元 = 台式机
$9 = 目录-bin.txt
在这个示例系统中,通配符 * 扩展为 82 个参数。 我们如何处理这么多? shell 提供了一种方法,尽管是一种笨拙的方法来执行此操作。 这 转移 命令每次执行时都会导致所有参数“下移一个”。 事实上,通过使用 转移, 可以只用一个参数(除了 $0,永远不会改变):
#!/斌/庆典
# posit-param2: 显示所有参数的脚本 count=1
而 [[ $# -gt 0 ]]; 做
echo "参数 $count = $1" count=$((count + 1))
转移完成
#!/斌/庆典
# posit-param2: 显示所有参数的脚本 count=1
而 [[ $# -gt 0 ]]; 做
echo "参数 $count = $1" count=$((count + 1))
转移完成
每一次 转移 被执行,值 $2 移至 $1, 的价值 $3 移至 $2 等等。 的价值 $# 也减一。
在 位置参数2 在程序中,我们创建了一个循环来评估剩余的参数数量,只要至少有一个,就会继续。 我们显示当前参数,增加变量 数 随着循环的每次迭代,提供处理的参数数量的运行计数,最后,执行一个 转移 装载
$1 与下一个参数。 这是工作中的程序:
[我@linuxbox ~]$ 位置参数2 abcd
参数 1 = a 参数 2 = b 参数 3 = c 参数 4 = d
[我@linuxbox ~]$ 位置参数2 abcd
参数 1 = a 参数 2 = b 参数 3 = c 参数 4 = d