MrK*_*ler 2 bash arguments dynamic
我试图找到一种方法来动态存储我为 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
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做,从数组中取出每个参数。
for i in ${arr[@]}
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我运行脚本时,我最终保存了参数的位置,并且在此过程中丢失了一个参数。例子:
bash testscript.sh 1 2 2 3 1 gives me 2 2 3 1 (empty)
Run Code Online (Sandbox Code Playgroud)
我做错了什么,你们对我的问题有什么解决办法吗?
代替:
y=1
Run Code Online (Sandbox Code Playgroud)
你应该使用:
y=0
Run Code Online (Sandbox Code Playgroud)
因为 BASH 中数组索引从 0 开始。
还可以使用:
arr=( "$@" )
Run Code Online (Sandbox Code Playgroud)
使用传递给脚本的所有参数创建数组(如我上面的评论)。
您还可以在 BASH 中像这样循环遍历数组元素:
for ((y=0; y<$#; y++))
do
val="${arr[$y]}"
echo "$val"
done
Run Code Online (Sandbox Code Playgroud)