如何取得传入shell脚本的第i个值?要求i循环到几就取第几个参数

 我来答
百度网友853f739
2018-06-25 · TA获得超过146个赞
知道小有建树答主
回答量:110
采纳率:100%
帮助的人:88.7万
展开全部

按照题主的意思,可以使用shift命令。

什么是shift?举例:假如你有三个参数 $1,$2,$3。在脚本中使用一次shift,将使$2的值成为$1的新值,$3的值成为$2的新值;使用shift 2,将使$3的值成为$1的新值。所以(伪代码):

i=1
para=$1 //获得第1个参数值
...
i=i+1
shift
para=$1 //获得第$i个参数值
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东风进007
2018-07-23 · TA获得超过146个赞
知道小有建树答主
回答量:96
采纳率:80%
帮助的人:44.1万
展开全部

shell脚本传参,可通过$0(脚本名),$1(第1参),$2(第2参)...$#(参数个数)方式获取

num=$#
for i in `seq $num`  # 循环1到$num数字
do
    echo $i  # 打印参数
done
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albumin
2018-06-02 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2396万
展开全部
j=1
while [ $j -lt $i ]
do 
shift 
done
echo $1

while执行shift i-1次,最后$1就是脚本的第i个值

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
良玉小帝
推荐于2018-08-07 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9451

向TA提问 私信TA
展开全部
可以把参数全给一个变量
然后awk去取对应的值
[root@localhost ~]# cat 1
#!/bin/bash
a=$*
echo $a|awk '{print $2}'
[root@localhost ~]# sh 1 a 11 bc 33
11
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Hei_XiaoBai
2018-08-21
知道答主
回答量:5
采纳率:50%
帮助的人:3986
展开全部
#/bin/bash
for i in $@
do
    echo $i
done
[hxb@Arch test]$ ./a.sh a bb ccc
a
bb
ccc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(18)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式