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

2024-12-14 19:20:43
推荐回答(5个)
回答1:

按照题主的意思,可以使用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个参数值
...

回答2:

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

num=$#
for i in `seq $num`  # 循环1到$num数字
do
    echo $i  # 打印参数
done

回答3:

j=1
while [ $j -lt $i ]
do 
shift 
done
echo $1

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

回答4:

可以把参数全给一个变量
然后awk去取对应的值
[root@localhost ~]# cat 1
#!/bin/bash
a=$*
echo $a|awk '{print $2}'
[root@localhost ~]# sh 1 a 11 bc 33
11

回答5:

#/bin/bash
for i in $@
do
    echo $i
done
[hxb@Arch test]$ ./a.sh a bb ccc
a
bb
ccc