Bash 配列の配列要素を別々の行に印刷するにはどうすればよいでしょうか。この方法は機能しますが、もっと良い方法があるはずです。
$ my_array=(one two three)
$ for i in ${my_array[@]}; do echo $i; done
one
two
three
これを試してみましたが、うまくいきませんでした:
$ IFS=$'\n' echo ${my_array[*]}
one two three
ベストアンサー1
これを試してみてください:
$ printf '%s\n' "${my_array[@]}"
$@
との違い$*
:
引用符で囲まれていない場合、結果は不定です。Bash では、両方とも別々の引数に展開され、その後単語分割されてグロブ化されます。
引用符で囲まれている場合は、
"$@"
各要素を個別の引数として展開しますが、 は"$*"
1 つの引数にマージされた引数に展開します:"$1c$2c..."
( はc
の最初の文字ですIFS
)。
ほとんどの場合、 が欲しくなります"$@"
。 についても同様です"${arr[@]}"
。
常に二重引用符で囲んでください。