7

ファイルからコマンドを読み取るように設計されていないプログラム (私が作成していない) があります。STDIN でコマンドを入力するのはかなり面倒なので、コマンドをファイルに書き込んで再利用できるように自動化できるようにしたいと考えています。問題は、プログラムが EOF に達した場合、次のコマンドを読み込もうとして無限にループし、画面にメニュー オプションのエンドレスなトレントをドロップすることです。

私ができるようにしたいのは、コマンドを含むファイルをパイプ経由でプログラムに cat し、ある種のシェルマジックを使用して、ファイルのEOFに達したときにファイルからSTDINに切り替えることです。

注: STDIN に「-」を指定して cat を使用することは既に検討しています。残念ながら (私はこれまで知りませんでした)、パイプ コマンドは、最初のプログラムの出力が終了するのを待ってから、2 番目のプログラムを開始します。それらは並行して実行されません。そのようなパイプ処理と並行してプログラムを実行する方法があれば、それはうまくいくでしょう!

何かご意見は?ご協力ありがとうございます。

編集:

私の目標は、システムがコマンド ファイルの最後に達するのを防ぐことだけではないことに注意してください。ファイルが EOF に達したときに、キーボードからコマンドを入力し続けられるようにしたいと考えています。

4

4 に答える 4

16

私は次のようなことをします

(cat your_file_with_commands; cat) | sh your_script

そうすれば、コマンドを含むファイルが完了すると、2番目のファイルは、cat後で標準入力に入力したものをスクリプトにフィードします。

于 2009-10-14T07:22:37.343 に答える
3

より単純な構文の Idelic answer と同じ ;)

cat your_file_with_commands - | sh your_script
于 2015-06-04T00:29:53.347 に答える
2

私はexpectこれのために働くと思います。

于 2009-10-13T16:37:23.497 に答える
1

tail -f commandfile | command 後でファイル記述子を閉じずに、ファイルの行をコマンドにパイプする必要があると思うようなものを使用してみましたか。すべての行をキャッチできない-n場合に、パイプする行数を指定するために使用します。tail -f

于 2009-10-13T15:42:07.740 に答える