我在使用 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 stable(4.2.37(1)-release)上的 bash 给出了所描述的奇怪之处。