このループが最初の項目の後に停止する理由がわかりません。誰かが私を方向に向けることができますか? ありがとう!
#! /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
次のように変更してみてください。
for color in "${colors[@]}"
do
echo $color
done
引用符を削除すると、この例では機能しますが、単一の色にスペースがある場合 (たとえば"sky blue"
) は機能しません。
それを行う多くの方法の 1 つは、for
ループを使用することです。ここでの追加情報は、配列のサイズを取得する方法です。
#Get the size of the array
nColors=${#colors[*]}
for (( Idx = 0; Idx < $nColors; ++Idx )); do
echo "${colors[$Idx]}"
done