
キーボード入力を受け取り、プロンプトと計算結果を出力する簡単な 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
スクリプトを実行すると、自動化されたやり取り全体のトランスクリプトが取得されます。