如何使用shift解决shell编程中的入参问题-创新互联

这篇文章主要介绍如何使用shift解决shell编程中的入参问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

目前创新互联已为上1000+的企业提供了网站建设、域名、网页空间、成都网站托管、企业网站设计、礼县网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。



shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了。

$#是入参的个数,
$@是当前所有的入参
$0是脚本的名字
$1是第一个入参,$2是第二个入参。。。。

Bash定义了$1到$9,一共9个位置变量,这就决定了我们不能无限制的用$11之类的来获取更多的入参。
这时候就需要用shift了,shift会将入参右移,如下图所示:

如何使用shift解决shell编程中的入参问题


我们看一段shell代码,加深理解:



代码如下:


root@manu:~/code/shell/temp# cat test.sh
#!/bin/sh
until [ $# -eq 0 ]
do
echo "$@"
shift
done




看下输出:



代码如下:


root@manu:~/code/shell/temp# ./test.sh 10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1




现在,如果入參的个数不定,我们如何处理入参呢?


代码如下:


until [ -z "$1" ] # Until all parameters used up
do
store_input $1
shift
done



上面这个伪码片段表明如何处理不定的入参,通过store_input,我们将每一个入参保存下来,然后,我们就可以处理了。
最后的最后,给出一个处理不定参数的例子:


代码如下:


manu@manu:~/code/shell/temp$ cat sum.sh
#!/bin/sh
sum=0
until [ -z $1 ]
do
sum=`echo $sum+$1 |bc`
shift
done
echo $sum



输出如下:


代码如下:


manu@manu:~/code/shell/temp$ ./sum.sh 1 2 3 4 5 6 7 8 9 10
55


以上是“如何使用shift解决shell编程中的入参问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


网页名称:如何使用shift解决shell编程中的入参问题-创新互联
新闻来源:http://myzitong.com/article/csojes.html