1

このループが最初の項目の後に停止する理由がわかりません。誰かが私を方向に向けることができますか? ありがとう!

#! /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
4

2 に答える 2

2

次のように変更してみてください。

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

引用符を削除すると、この例では機能しますが、単一の色にスペースがある場合 (たとえば"sky blue") は機能しません。

于 2012-04-03T22:06:50.250 に答える
2

それを行う多くの方法の 1 つは、forループを使用することです。ここでの追加情報は、配列のサイズを取得する方法です。

#Get the size of the array
nColors=${#colors[*]}
for (( Idx = 0; Idx < $nColors; ++Idx  )); do
    echo "${colors[$Idx]}"
done
于 2012-04-03T22:09:02.493 に答える