ループでHere Document変数を使用する際に問題があります。なぜならこれがうまくいくからです。
while IFS= read -r line; do
echo "(${line})"
done <<EOF
one
two
three
EOF
しかし、これはそうではありません
foo=<<EOF
one
two
three
EOF
while IFS= read -r line; do
echo "(${line})"
done <<<"$foo"
今私はbashスクリプトが初めてです。頭の上に疑問符があるだけでなく、2番目の構文(ここではスクリプトの上部に記載されている)を維持し、何とか動作させる方法を知りたいです。
ご協力ありがとうございます。
ベストアンサー1
foo
これにより、変数が区切られた文書の内容に設定されなくなります。
foo=<<EOF
one
two
three
EOF
リダイレクトを使用した空の文字列の変数割り当て。これにより、何が起こっているのかをより明確にすることができます。
foo="" <<EOF
one
two
three
EOF
しかし、実際にはheredocは必要ありません。ただし:
foo="one
two
three"