string – 在第n个参数之后抓取所有参数并在bash中将它们连接在
发布时间:2020-12-15 22:43:33 所属栏目:安全 来源:网络整理
导读:所以我有一个bash脚本需要采用任意数量的命令行参数并将它们放入一个字符串中 用户输入内容的示例: give environment email any number of integers separated by spacesgive testing stuff@things.com 1 2 3 4 5 我希望得到从$3到$#的所有参数,并将它们连
所以我有一个bash脚本需要采用任意数量的命令行参数并将它们放入一个字符串中
用户输入内容的示例: give <environment> <email> <any number of integers separated by spaces> give testing stuff@things.com 1 2 3 4 5 我希望得到从$3到$#的所有参数,并将它们连接成一个字符串. 我现在的(可能很糟糕的)解决方案是 if [ $# -gt 3 ] then env="env="$1 email="email="$2 entList="" for i in {3..$#} do if [ $i -eq 3 ] then entList=$3 shift fi; if [ $i -gt 3 ] then entList=$entList","$3 shift fi; done fi; 我处理只有三个参数有点不同的情况,并且一个工作正常. $entList的最终值给出了示例给出的测试stuff@things.com 1 2 3 4 5应该是:1,2,3,4,5 现在,当我运行这个时,我得到以下错误: /usr/local/bin/ngive.sh: line 29: [: {3..5}: integer expression expected /usr/local/bin/ngive.sh: line 34: [: {3..5}: integer expression expected 第29和34行是: line 29: if [ $i -eq 3 ] line 34: if [ $i -gt 3 ] 任何帮助,将不胜感激. 解决方法
你走在正确的轨道上.这是我的建议:
if [ $# -ge 3 ]; then env="$1" email="$2" entlist="$3" while shift && [ -n "$3" ]; do entlist="${entlist},$3" done echo "entlist=$entlist" else echo "Arguments: $*" fi 请注意,变量应始终放在引号内.我不确定你为什么要设置env = env = $1,但我怀疑如果你想稍后再循环这个值,你应该以编程方式进行,而不是通过评估变量就好像它是一个语句,如果是你的计划. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 利用SOAP扩展开发WebService(PHP)
- angularjs使用ng-repeat不用包含在html元素中
- twitter-bootstrap – Bootstrap Grid列之间的边界不起作用
- Bootstrap按钮组件
- angularjs – 从子模态控制器(ui bootstrap)调用父控制器方
- 使用Passportjs从Angularjs(http get / resource)进行用户身
- CentOS Shell常用技巧 grep
- shell – 为什么我的awk子命令失败?
- angular – 如何将ngStyle应用于:组件中的host元素?
- 格式化来自shell的GitHub提交消息