【发布时间】:2015-01-07 13:25:18
【问题描述】:
我试图找到一种方法,将我将为 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)
我做错了什么,你们有解决我的问题的方法吗?
【问题讨论】:
-
为什么不直接做:
arr=( "$@" )来创建你的数组。 -
@anubhava,所以你的意思是删除整个第一个while循环并用
arr=( "$@" )替换它 -
@anubhava 还是有问题;我编辑了我的问题,因为我觉得它是正确的方式。
-
由于您将 args 存储在 awway 中,因此请使用该数组的长度来保持一致:
while [[ $y -lt ${#arr[@]} ]]