前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell脚本中while 和shift 配和解决变长参数问题

shell脚本中while 和shift 配和解决变长参数问题

作者头像
qsjs
发布2020-06-09 09:01:03
1.7K0
发布2020-06-09 09:01:03
举报

在shell脚本中,我们经常需要根据传递的参数个数来进行相应的处理,那么参数个数不定的情况下如何实现优雅的处理呢?

  1. 鄙人不才,一直先判断参数的总个数,然后执行对应的循环做处理,这样不是不可以,就是觉得怪怪的,作为一个进阶的运维人员,总得有更好的方法,不是吗?
  2. 在查看系统中自带脚本的时候,发现了如下的解决方法(学习系统中原生脚本的重要性):
代码语言:javascript
复制
[root@localhost ~]# cat test.sh
#!/bin/bash
while [ $# -gt 0 ];do
        echo $1
        shift           #shift 语句会把位置参数进行移位操作. 这个是实现的关键.
done
[root@localhost ~]# ./test.sh "P1" "P2"
P1
P2
[root@localhost ~]# ./test.sh
[root@localhost ~]#

查看下shift的具体帮助,其内容如下:

代码语言:javascript
复制
[root@localhost ~]# help shift
shift: shift [n]
    Shift positional parameters.

    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is
    not given, it is assumed to be 1.

    Exit Status:
    Returns success unless N is negative or greater than $#.
[root@localhost ~]#

从上面的帮助可以看出,如果shift 命令不带参数,那么就是“将位置参数向左移位,最左边的参数被丢掉" 用上面的方法处理起来就优雅多了.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档