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

时间:2014-02-14 13:10:26

标签: linux bash

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

我的代码:

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'

2 个答案:

答案 0 :(得分:3)

如果你的颜色是一对一的,你可能会在展开存储它们的变量时立即丢失信息(删除空格和换行符之间的区别,扩展全局字符等)。

不要那样做。相反,请关注BashFAQ #1

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

如果您只想要每行中的特定列,那就更加真实了; read会为您进行列拆分,从而更容易分配。

答案 1 :(得分:2)

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

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

或者甚至更简单:

array=( $(command) )