リダイレクトされた入力をコマンド出力としてカウントする方法

リダイレクトされた入力をコマンド出力としてカウントする方法

キーボード入力を受け取り、プロンプトと計算結果を出力する簡単な C コンソール プログラムがあります。また、テキスト ファイルも 2 つあります。1 つはプログラムの入力を含むファイル、もう 1 つはプログラムが出力する出力を含むファイルです。

問題はそれです

$ c_program < input_file > output_file

入力を出力ファイルにエコーしません。output_file には、リダイレクトされた入力がなく、プロンプトと計算だけが含まれます。キーボードで入力したときとまったく同じように出力ファイルが表示されるように、入力と出力を一致させるにはどうすればよいですか?

たとえば、次のサンプルセッションを次に示します。

Input number of feet traveled: 5
Input number of seconds: 2.5
Average speed is 2.0 feet per second

しかし、入力と出力をリダイレクトすると、次のようになります。

Input number of feet traveled: Input number of seconds: Average speed is 2.0 feet per second

2番目を1番目と同じにするにはどうすればいいでしょうか?

答え1

プログラムとの対話を正しい順序でキャプチャしながらスクリプト化するには、単なる入力と出力のリダイレクトよりも高度なツールを検討する必要があるかもしれません。

例えば、期待(1)次のように対話をスクリプト化できます。

#!/usr/bin/expect
spawn "./c_program"    
expect "Input number of feet traveled: "
send "5\r"
expect "Input number of seconds: "
send "2.5\r"
expect eof

スクリプトを実行すると、自動化されたやり取り全体のトランスクリプトが取得されます。

関連情報