首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

shift:解决shell编程中的入参问题

本文来自Bean_lee投稿,自己对文章做了部分修改。

我说过了,shell是我的常规武器,目前虽然还不纯熟,但是我爱shell这门语言,在Linux下面混,总要写脚本。程序员是有基因,对编程语言是有偏好的,你让我写C代码,我会觉得很爽,会有困难,会有痛苦的摸索和学习,但是,我愿意;

学习shell/python,我也很乐意,甚至Lisp这种冷门的语言我也充满了好奇,虽然现在Go和Erlang我一点也不懂,但是我按耐不住对这两种语言的兴趣,只要我抽出手来,一定会和他们缠绵一番。有爱就会有恨,我痛苦地意识到到自己是个很情绪化的程序员,哪怕我一遍遍地骂自己bitch is bitchy,一遍遍的告诉自己要端正态度。我知道我在跑题,我贱人就是矫情,但是我压抑的太难受了,不找个地方发泄一下,我会把自己憋坏。

shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了,下面先看shell中预定义的几个特殊变量,后面会用到:

$#:是入参的个数

$@:是当前所有的入参

$0:是脚本的名字

$1:是第一个入参,$2是第二个入参。。。。

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

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

输出如下:

注:shell中,until命令和while命令类似,while能实现的脚本until同样也可以实现,但区别是until循环的退出状态是不为0,即whie循环在条件为真时继续执行循环而until则在条件为假时执行循环。

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

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

最后的最后,给出一个处理不定参数的例子:

输出如下:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111B03G3D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券