shell数组循环在1之后停止

时间:2012-04-03 22:02:17

标签: shell loops

我不知道为什么这个循环在第一个项目之后停止。有人能指出我的方向吗?谢谢!

#! /bin/sh

colors[0]="teal"
colors[1]="purple"
colors[2]="pink"
colors[3]="red"
colors[4]="green"
colors[5]="darkblue"
colors[6]="skyblue"

for color in ${colors}
do
    echo $color
done

2 个答案:

答案 0 :(得分:2)

尝试将其更改为以下内容:

for color in "${colors[@]}"
do
    echo $color
done

删除引号适用于您的示例,但如果单个颜色中有任何空格(例如"sky blue")则不行。

答案 1 :(得分:2)

执行此操作的众多方法之一是使用for循环。这里的其他信息是如何获得数组的大小。

#Get the size of the array
nColors=${#colors[*]}
for (( Idx = 0; Idx < $nColors; ++Idx  )); do
    echo "${colors[$Idx]}"
done