我的脚本中有一个数组,我想在其中使用它,如下所示:
for j in "${list[@]}"
do
func $j
done
在函数func中,有时另一个成员将添加到列表数组中,但for迭代的时间与启动时一样多(在启动之前)
我希望“for”基于更新的数组内容进行迭代
这个功能的一些部分:
if [ $s1 -gt 0 ]
then
(( k = $k +1 ))
list[$k]=$id2
fi
答案 0 :(得分:5)
正如Eric Renouf所说,修改你正在处理的列表可能会很棘手。只要您只添加新元素(到列表的 end ),并且只想在迭代中包含这些新元素,您就可以使用以下内容:
${#list[@]}
由于每次重新计算列表的长度(+=( )
),循环将包含新元素。此外,ProductConfiguration
语法可以保证您始终严格追加。
答案 1 :(得分:1)
k
似乎是最后一个元素的索引,这意味着您的函数只会将项目附加到列表的末尾。似乎最好的选择是迭代,而单独的计数器小于k
。
i=0
while (( i < k )); do
j=${list[i]}
func "$j"
((i++))
done