私は次のシェルスクリプトを持っています:
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
これが 1 つのバージョンでしか機能しないのはなぜですか? それはバグですか、それとも追加機能ですか?
プロセスの置換は正常に機能しているようですが、ファイルのソース時に問題が発生しました。
これが予想される動作である場合source
、異なる bash バージョン間で互換性を保つために、標準入力からの何かに代わりに使用する必要がある他の構文は何ですか?