(Bash) 动态保存 n 个参数

(Bash) Dynamically save n 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)

我做错了什么,你们对我的问题有什么解决办法吗?

而不是:

y=1

你应该使用:

y=0

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

同时使用:

arr=( "$@" )

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

您也可以在 BASH:

中像这样遍历数组元素
for ((y=0; y<$#; y++))
do
        val="${arr[$y]}"
        echo "$val"
done