(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
我试图找到一种方法来动态存储我为数组中的 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