本部分内容参考自《Linux命令行与shell脚本编程大全 第3版》。
bash shell 工具箱中另一件工具是 shift 命令。 bash shell 的 shift 命令能够用来操作命令行参数。跟字面上的意思一样, shift 命令会根据它们的相对位置来移动命令行参数。
在使用 shift 命令时,默认情况下它会将每个参数变量向左移动一个位置。所以,变量 $3 的值会移到 $2 中,变量 $2 的值会移到 $1 中,而变量 $1 的值则会被删除(注意,变量 $0 的值,也就是程序名,不会改变)。
这是遍历命令行参数的另一个好方法,尤其是在你不知道到底有多少参数时。你可以只操作第一个参数,移动参数,然后继续操作第一个参数。
这里有个例子来解释它是如何工作的。
$ cat test21.sh
#!/bin/bash
count=1
while [ -n "$1" ]
do
echo "Parameter #$count = $1"
count=$[ $count + 1 ]
shift
done
$ ./test21.sh 1 2 3
Parameter #1 = 1
Parameter #2 = 2
Parameter #3 = 3
这个脚本通过测试第一个参数值的长度执行了一个 while 循环。当第一个参数的长度为零时,循环结束。测试完第一个参数后, shift 命令会将所有参数的位置移动一个位置。
使用
shift命令的时候要小心。如果某个参数被移出,它的值就被丢弃了,无法再恢复。
另外,你也可以一次性移动多个位置,只需要给 shift 命令提供一个参数,指明要移动的位置数就行了。
$ cat test22.sh
#!/bin/bash
echo "The original parameters: $*"
shift 2
echo "Here's the new first parameter: $1"
$ ./test22.sh 1 2 3 4
The original parameters: 1 2 3 4
Here's the new first parameter: 3
通过使用 shift 命令的参数,就可以轻松地跳过不需要的参数。
评论区