我试图找到一种方法来动态存储我将为数组中的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)
我做错了什么,你们对我的问题有什么修正吗?
答案 0 :(得分:2)
而不是:
y=1
您应该使用:
y=0
因为数组索引在BASH中从0开始。
也可以使用:
arr=( "$@" )
使用传递给脚本的所有参数创建数组(如上面的评论)。
你也可以在BASH中循环遍历这样的数组元素:
for ((y=0; y<$#; y++))
do
val="${arr[$y]}"
echo "$val"
done