配列があります
declare -a her=("ger" "blr" "tyg" "")
for i in "${her[@]}"; do
echo $i
done
わかりました。
ger
blr
tyg
ただし、配列に追加しようとすると、スペースなしで長い文字列が表示されます。
declare -a you
#without quotes and with quotes
#' " same result
for i in {"fgt","fe","ger"}; do
you+=${i}
done
for i in "${you[@]}"; do
$i
done
Fgtfeger
何が起こっているのかについての洞察力はありますか?一種の使いやすさを落とします。
答え1
配列複合割り当て構文を使用し、それ以外の場合は長さをインデックスとして使用します。
次のいずれかの方法を使用して配列に追加する必要があります。複合割り当て構文(foo=("elem1" ...)
たとえば、配列インデックス。
配列複合割り当て構文
括弧で囲まれた形式を使用すると、一度に1つ以上の要素を挿入でき、読みやすくなります。たとえば、
# start with a clean slate
unset you
for i in "fgt" "fe" "ger"; do
you+=("$i")
done
printf "%s\n" "${you[@]}"
これにより、期待値が生成されます。
fgt fe ger
インデックスに挿入長さ
インデックスを割り当てても同様の結果が得られます。たとえば、
unset you
for i in "fgt" "fe" "ger"; do
you[${#you[@]}]="$i"
done
printf "%s\n" "${you[@]}"
2番目の例は、Bash配列がゼロインデックスであるために機能します。長さ配列のインデックスは、追加時に割り当てる必要がある次に使用可能なインデックスでもあります。