2 개의 숫자를 더하는 간단한 C 프로그램이 있다고 가정 해 보겠습니다.
#include <stdio.h>
int main(void) {
int a, b;
printf("Enter a: "); scanf("%d", &a);
printf("Enter b: "); scanf("%d", &b);
printf("a + b = %d\n", a + b);
return 0;
}
실행될 때마다 터미널에 입력하는 대신 파일 에 a
및 값을 입력 b
합니다.
// input.txt
10
20
그런 다음 stdin
이 파일 로 리디렉션 합니다.
./a.out < input.txt
프로그램은 작동하지만 출력이 약간 엉망입니다.
Enter a: Enter b: a + b = 30
사용자가 값을 수동으로 입력 한 것처럼 출력이 나타나도록 stdin을 stdout으로 리디렉션하는 방법이 있습니까?
Enter a: 10
Enter b: 20
a + b = 30
이것을 기대할 수 있습니다. Expect는 대화 형 명령 줄 프로그램을 자동화하는 도구입니다. 이러한 값을 자동으로 입력하는 방법은 다음과 같습니다.
#!/usr/bin/expect
set timeout 20
spawn "./a.out"
expect "Enter a: " { send "10\r" }
expect "Enter b: " { send "20\r" }
interact
다음과 같은 출력이 생성됩니다.
$ ./expect
spawn ./test
Enter a: 10
Enter b: 20
a + b = 30
여기에 더 많은 예가 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다