variables作为bash数组索引?

#!/bin/bash set -x array_counter=0 array_value=1 array=(0 0 0) for number in ${array[@]} do array[$array_counter]="$array_value" array_counter=$(($array_counter + 1)) done 

当在脚本上面运行时,我得到以下debugging输出:

 + array_counter=0 + array_value=1 + array=(0 0 0) + for number in '${array[@]}' + array[$array_counter]=1 + array_counter=1 + for number in '${array[@]}' + array[$array_counter]=1 + array_counter=2 + for number in '${array[@]}' + array[$array_counter]=1 + array_counter=3 

为什么variables$ array_counter在用作数组[]中的索引时不能展开?

Solutions Collecting From Web of "variables作为bash数组索引?"

Bash似乎非常满意变量作为数组索引:

 $ array=(abc) $ arrayindex=2 $ echo ${array[$arrayindex]} c $ array[$arrayindex]=MONKEY $ echo ${array[$arrayindex]} MONKEY 

你的例子实际上工作。

 echo ${array[@]} 

证实了这一点。

你可以尝试更有效的方式来增加你的索引:

 ((array_counter++))