bash スクリプトで奇妙な問題が発生しています。それを再現するための最小限のコードは次のとおりです。
#!/bin/bash
function f() {
IFS=. read a b <<<"$1"
echo "a=$a b=$b"
}
f a.b
echo "inside echo: `f a.b`"
cat <<EOT
Inside heredoc: `f a.b`
EOT
予想される出力は次のとおりです。
a=a b=b
inside echo: a=a b=b
Inside heredoc: a=a b=b
しかし、私は得る:
a=a b=b
inside echo: a=a b=b
Inside heredoc: a=a.b b=
ここで何が欠けていますか?
更新: 私の Mac (3.2.48) の bash は期待どおりに動作します。私のdebian安定版(4.2.37(1)リリース)のbashは、説明されている奇妙さをもたらします。