bash coproc サブシェル内の子-上位通信

bash coproc サブシェル内の子-上位通信

次のスクリプトのようなことをしたいと思います。

coproc test { ls; }
base64 <&${test[0]} | wc -l

しかし、失敗し、これは次のことに関連しています。これ:

コマンドの実行およびプロセス置換用に生成されたファイル記述子を除いて、ファイル記述子はサブシェルでは使用できません。

この問題を解決する1つの方法は次のとおりです。

coproc test { ls; }
out=$(cat<&${test[0]});
echo $out|base64| wc -l

パイプを使用して同じ結果を得る方法はありますか?

答え1

#!/bin/bash
coproc test (ls)
wc -l < <(base64 <&"${test[0]}")

関連情報