catを使った簡単なプロセスの交換が中断されたようです。
cat >( echo hello; )
決して終わりません。また試しました:
cat >( echo hello; exit; )
子プロセスでstdoutファイルの説明を手動で閉じても機能しません。
cat >( echo hello; 1>&- )
cat >( echo hello; 1>&- exit; )
私はGNU bashバージョン4.4.23(1)-リリース、GNU bash、バージョン4.1.2(2)-リリースとzsh 5.5.1(x86_64-debian-linux-gnu)を試しました。
なぜこれが起こるのか説明できますか?私はプロセスの置き換えが大好きです...
ありがとう
編集:catがechoから読み取られた場合、プロセス置換の正しいリダイレクトは次のとおりです。
cat <( echo hello; )
ベストアンサー1
あなたのコードは決してcat >( echo hola; )
終了しません。
- まずパターンをエコーします。
hola
- 書き込みのための入力を受け入れます。
- 私たちがそれを与えると、書き込む
Ctrl+D
ファイルを検索し続けます。
オプション1:エコーされたファイルへのコンテキストの書き込み
cat > $( echo hola; )
したがって、以下に提供するすべてのコンテキストはhola
。
注:次のようにcatブロックを終了できます。Ctrl+D
オプション2:エコーされたコンテキストをキャプチャします。
cat <(echo hola;)