関連:
上記の質問を読みましたが、まだ必要なことをする方法がわかりません。
getreport
以下を実行するために呼び出すバイナリコマンドがあります。
- パスワードプロンプト(stderrに送信されたプロンプト)
- 標準入力からパスワードを読みます。
- 大量のデータを標準出力として印刷します。
呼び出す最初のコマンドの出力を解析する別のバイナリコマンドがありますprocessreport
。しかし、stdinでは動作しません。コマンドラインにフラグ-i
付きのファイルのみを許可して処理します。ファイルから読み込み、読み込んだデータを使ってジョブを実行し、そのジョブのデータを出力します。 (このprocessreport
コマンドは返品と完全に独立してパスワードの入力を求められますgetreport
。 )
getreport
.
それは次のとおりです。
processreport -i <(getreport)
getreport
しかし、どうやって読むのかわかりません。ターミナルからパスワードが必要です。
可能ですか?
ベストアンサー1
{ getreport | 4<&0 <&3 processreport -i /dev/fd/4; } 3<&0
常に明示的に読むには、次の手順を実行します/dev/tty
。
getreport | 3<&0 </dev/tty processreport -i /dev/fd/3
...またはもっと簡単に、stderrが常にstdinと同じであることを知っていれば - 一般的に端末でのように...
getreport | 3<&0 <&2 processreport -i /dev/fd/3