2

プロセス置換について学習しようとしていますが、これを実行すると:

$ tee >(wc -l) <<< $'aaa\nbbb'
aaa
bbb
$ 2

bash次のプロンプトの後に番号を出力し、Enter キーを押すのを待ちます。

を使用してbash 4.4.12いますが、 で同じ問題が発生していbash 4.3.48ます。問題はなくbash 4.3.30、コマンドは正しく出力します:

$ tee >(wc -l) <<< $'aaa\nbbb'
aaa
bbb
2

考えられる問題は何ですか?

4

2 に答える 2

3

これは、プロセス置換の癖/設計上の欠陥です。bash はメイン コマンドが終了するのを待つだけです。置換されたプロセスが終了するのを待ちません。終了時に競合状態を作成しteeます:次のプロンプトを出力するwc前に終了しますか? bashあるときは、そうでないときもあります。

詳細な説明と考えられる回避策については、Stéphane Chazelas によるこの Unix.SE の回答を参照してください。

于 2018-01-12T02:03:18.097 に答える