
키보드 입력을 받아 프롬프트와 계산을 출력하는 간단한 C 콘솔 프로그램이 있습니다. 또한 두 개의 텍스트 파일이 있습니다. 프로그램에 대한 입력이 포함된 파일과 프로그램이 제공해야 하는 출력이 포함된 파일입니다.
문제는
$ 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
두 번째를 첫 번째처럼 보이도록 하려면 어떻게 해야 합니까?
답변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
스크립트를 실행하면 전체 자동화된 상호 작용의 기록을 받게 됩니다.