侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

绿泡泡:___zze,添加备注来意

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Shell脚本编程(9)之使用shift命令移动变量

zze
zze
2019-12-23 / 0 评论 / 0 点赞 / 603 阅读 / 1351 字

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

0

评论区