我有以下的 shell 脚本:
cat <(echo foo)
source <(echo bar=bar)
echo $bar
然而在 GNU bash 3.2 和 4.3 中,它的工作方式有所不同,如下所示:
$ /bin/bash foo.sh
foo
3.2.53(1)-release
$ /usr/local/bin/bash foo.sh
foo
bar
4.3.33(1)-release
为什么这只适用于一个版本?这是一个错误还是新增的功能?
进程替代似乎运行良好,但在对文件进行源操作时出现问题。
如果这是预期的行为,那么我应该使用哪种语法来从标准输入中“source”某些内容,以便在不同的bash版本之间兼容?