저는 Python 스크립트를 실행하는 쉘 스크립트를 작성 중입니다. Python 스크립트는 수동 입력을 제공하기 위해 일시 중지됩니다. 그러나 스크립트에서 매번 Enter 키를 누르고 싶지는 않습니다. 대신 실행 중인 셸 스크립트에서 수동 입력을 전달하고 싶습니다.
도와주세요. 방법이 있나요?
답변1
입력이 하나만 필요한 경우 echo
파이프를 사용하면 됩니다.
echo | python script.py
echo
빈 줄(개행 포함)을 표준 출력으로 인쇄한 다음 Python 스크립트의 입력으로 리디렉션합니다.사용|
. Python이 표준 입력에서 읽을 때 빈 줄을 얻고 계속됩니다.
스크립트에서 Enter 키를 여러 번 눌러야 하는 경우 다음을 사용할 수 있습니다.yes
주문하다그리고 파이프:
yes "" | python script.py
이 yes
명령은 동일한 행을 표준 출력에 계속해서 인쇄합니다. 기본적으로 문자열은 이지만 y
여기서는 빈 문자열로 설정하므로 항상 개행 문자가 됩니다.
특정 프롬프트에 대한 응답으로 입력이 필요하고 다른 경우에는 다른 입력이 필요한 경우 다음을 사용하십시오.expect
, 이는 "대화형 프로그램과 자동으로 상호 작용할 수 있게 해주는 Tcl 확장입니다."
Python의 출력을 읽고 이에 대한 새 입력을 생성하도록 쉘 스크립트를 작성하는 것이 가능하지만 특별히 권장하지는 않습니다. 이렇게 하고 싶다면 참조하세요고급 Bash 스크립팅 가이드의 IO 리디렉션: 이 작업을 수행하려면 파일 설명자를 복제해야 합니다. 당신은 또한 사용할 수 있습니다mkfifo
명명된 파이프 파일을 생성한 다음 정상적으로 읽고 씁니다.
솔직히 말해서 다음 중 하나를 수행하는 지점에 도달하면 대안에 대해 생각하기 시작할 것입니다. 쉘 스크립트는 이를 위해 만들어지지 않았으며 예를 들어 Python 자체에서 스크립트를 작성하는 것이 더 간단할 것입니다.