単純な猫エコプロセスの交換は中止されます。

単純な猫エコプロセスの交換は中止されます。

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;)

おすすめ記事