本部分内容参考自《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
命令的参数,就可以轻松地跳过不需要的参数。
评论区