Bash脚本:在for循环中填充一个数组



我试图创建一个充满了一些值的数组。但我不知道怎么做。我试了下面的东西,但没用。

我的代码:

i=0
for c in colors; do
array[$i]=$c
echo {$c[$i]}
i=`expr $i + 1`
done

注意:"colors"是某种返回值列表的"ps-ef"命令。例如,它具有"蓝色、红色、黄色"值。

colors= 'ps -ef | grep colors'

您可以使用此脚本在循环中填充数组:

array=()
for c in $colors; do
array+=( "$c" )
done

或者更简单:

array=( $(command) )

如果你的颜色是一对一的,那么一旦你扩展了存储它们的变量,你就可能会丢失信息(去掉空格和换行符之间的区别,扩展glob字符等)。

不要那样做。相反,请遵循BashFAQ#1:

colors=()
while IFS='' read -r color; do
colors+=( "$color" )
done < <(get-color-list)

如果你只想从每一行中抽出一列,那就更正确了;read将为您进行列拆分,使分配更加容易。

相关内容

  • 没有找到相关文章