리디렉션을 시도Linux 쉘 스크립트에 대한 두 번째 응답

리디렉션을 시도Linux 쉘 스크립트에 대한 두 번째 응답

sh 스크립트로 래핑된 Java 프로그램을 사용하여 이진 응답 파일을 생성하는 프로세스를 자동화하려고 합니다(이것은 많은 문제가 있지만 내 코드에는 없습니다). 내가 원하는 결과를 얻으려면 sh 스크립트를 실행할 때 첫 번째 프롬프트에서 [enter]를 누르고 두 번째 프롬프트에서 "Y" [enter]를 눌러야 합니다.

Linux 상자에서 작동하도록 다음 코드를 사용했습니다.

echo Y > ans; ./script < ans `echo -e \\\r`

다른 Linux 상자에서는 작동하지 않습니다(내 코드가 아니라 스크립트가 다시 무한 루프에 들어갑니다). 두 시스템 모두 동일한 커널과 버전을 실행하고 있습니다.

나는 이것을 수행하는 더 우아하고 직접적인 방법이 있다고 확신합니다. 그러나 일관되게 작동하려면 필요합니다. 나는 이것이 상자 중 하나가 설정되는 방식이 아니라고 생각합니다.

답변1

간단한 expect스크립트를 사용해 보세요.

#!/usr/bin/기대

시간 초과 설정 20
/path/to/your/java/shell/script/thing.sh 생성

"첫 번째 프롬프트:" {"\r" 전송}이 필요합니다.
"두 번째 프롬프트:" {"Y" 보내기}가 필요합니다.
서로 영향을 미치다

... FirstPrompt첫 번째 프롬프트의 텍스트는 어디에 있습니까(따라서 쉘 스크립트에서 "Enter를 누르세요"라는 프롬프트가 표시되면 그대로 프롬프트가 필요합니다. 예제 스크립트에 "FirstPrompt:"를 썼습니다 expect). SecondPrompt는 두 가지 팁, 단어에 대한 단어입니다. 단어.

...또한 귀하의 시스템 expect에 설치되어 있다고 가정합니다 . /usr/bin/expect그렇지 않은 경우 설치하고 올바른 경로를 사용하십시오.

관련 정보