Fat*_*ebi 1 linux arrays bash shell
我的脚本中有一个数组,我想在其中使用它,如下所示:
for j in "${list[@]}"
do
func $j
done
Run Code Online (Sandbox Code Playgroud)
在函数func中,有时候另一个成员会添加到列表数组中,但for迭代的时间与启动时间一样多(在for)之前
我希望"for"根据更新的数组内容迭代
该函数的某些行:
if [ $s1 -gt 0 ]
then
(( k = $k +1 ))
list[$k]=$id2
fi
Run Code Online (Sandbox Code Playgroud)
正如Eric Renouf所说,修改你正在处理的列表可能会很棘手.只要您只添加新元素(到列表末尾),并且只想在迭代中包含这些新元素,您就可以使用以下内容:
for ((i=0; i<${#list[@]}; i++)); do
#...
if (( s1 > 0 )); then
list+=( "$id2" )
fi
done
Run Code Online (Sandbox Code Playgroud)
由于${#list[@]}每次都会重新计算list()的长度,因此循环将包含新元素.此外,+=( )语法保证您始终严格附加.