(Bash)动态保存n个参数

时间:2015-01-07 13:25:18

标签: bash dynamic arguments

我试图找到一种方法来动态存储我将为数组中的shell脚本传递的所有参数。当我必须循环遍历每个参数时,这将有所帮助,以进一步使用它们。

这是我的问题的答案。

#!bin/bash
#Overloop alle gegeven argumenten en sla ze op in arg(plaatsvhargument)
arr=( "$@" )

#Code om te testen of het wel werkt
y=0
while [[ $y -lt $# ]]

do

        val=${arr[$y]}
        echo $val
        (( y++))
done

我知道我可以这样做,从阵列中获取每个参数。

for i in ${arr[@]}
do
        echo $i    
done

我的问题是,当我运行脚本时,我最终保存了一个参数的位置,并且我在这个过程中丢失了一个参数。例如:

bash testscript.sh 1 2 2 3 1  gives me 2 2 3 1 (empty)

我做错了什么,你们对我的问题有什么修正吗?

1 个答案:

答案 0 :(得分:2)

而不是:

y=1

您应该使用:

y=0

因为数组索引在BASH中从0开始。

也可以使用:

arr=( "$@" )

使用传递给脚本的所有参数创建数组(如上面的评论)。

你也可以在BASH中循环遍历这样的数组元素:

for ((y=0; y<$#; y++))
do
        val="${arr[$y]}"
        echo "$val"
done