我有一个脚本:
#!/bin/bash
{ read a
read b
} <<< $(echo a; echo b)
declare -p a b
我把它写给f, 做chmod +x ./f, 并期望它bash ./f是./f相同的。
他们不是:
~/dev/test[1]$ ./f
declare -- a="a b"
declare -- b=""
~/dev/test[2]$ bash ./f
declare -- a="a"
declare -- b="b"
我发现bash ./f使用/usr/local/bin/bash的是 5.0.16 版,./f使用/bin/bash的是 3.2.57 版。
这些版本之间发生了什么变化以使评估有所不同?这是一个已经解决的错误吗?