2010-12-03 3 views
2

아래 출력과 비슷한 작동을하는 C 프로그램이 있습니다. 내가 무엇이 필요명령 줄 프로그램을 테스트 할 쉘 스크립트

WELCOME TO PROGRAM. 

Hit 1 to do task 1. 

Hit 2 to do task 2. 

Hit q to quit. 

는 1, 2를 입력하고 프로그램에 q는 그래서 내가 하나의 명령으로 모든 기능을 테스트 할 수 있습니다, 프로그램을 시작 bash 쉘 스크립트입니다.

나는 그것이 당신은 "여기에 문서"사용할 수있는 다음

#!/bin/bash 

./start kernel 
1 
2 
q 

답변

2

./program < input.txt는 일반적으로 당신이 이러한 유형의 응용 프로그램을 테스트하기위한 expect를 사용 input.txt를하고 프로그램이 방법을 실행 -

+0

앞에서 언급 한 솔루션이 작동하는 것으로 보이는 경우가 있지만 최상의 솔루션 인 것으로 보입니다. 도움 byron을 주셔서 감사합니다 :) –

4

에 유사하는 가정 것이다. 구문은 다음과 같습니다

./start kernel <<EOF 
1 
2 
q 
EOF 

"EOF"당신은 당신이 실제로 입력에해야 일이 아니다만큼, 원하는 고유 한 어떤 단어가 될 수 있습니다.

+0

이 영리한 솔루션 덕분 로렌스 : –

1

텍스트 파일에 입력을 저장할 수 있습니다.

+0

I입니다 이 방법을 "불쌍한 인간의 자동화"라고 부르십시오. 나는 그것을 인정하기보다는 자주 사용합니다. 오류 처리는 제로가 아니지만 일반적으로 작업이 완료됩니다. – bta

0

셸 스크립트는 마치 각 줄이 (비록 새로운) 셸에서 실행되는 것으로 생각할 수 있습니다.

입력 이런 종류의 작업을 수행하는 간단한 방법은, [your program]는 표준 입력을 받아 가정되어있다 :

#!/bin/bash 
echo "1" | [your program] > [logfile1] 
echo "2" | [your program] > [logfile2] 
echo "q" | [your program] > [logfileq] 
+0

내가 오해하면 나를 용서; 필자는 독창적 인 독서에서이 기능을 한 번에 하나씩 테스트하고 싶다고 생각했지만 (이 코드가하는 것), 제공된 다른 대답을 읽은 것은 분명하지 않습니다. – William

+0

@whoever_voted_down ... 내가 여기 처음 온 이래로 왜 그렇게했는지에 대한 조언을 해줄 수 있겠습니까? – William

1

내가 할이 :

 
#! /bin/bash 

printf "1\n2\nq\n" | ./start kernel 
+0

+1이 문서는 HERE 문서보다 더 잘 확장됩니다. –