비밀번호 프롬프트를 사용하여 프로그램에 입력 제공

비밀번호 프롬프트를 사용하여 프로그램에 입력 제공

다른 프로세스가 종료될 때까지 터미널에서 실행 중인 다른 프로세스에 여러 Enter 키를 제공할 수 있는 Linux 명령이 있습니까?

예를 들어 명령을 고려하십시오 yes ' ' | ./ssr-sim prepare. |파이프()의 LHS 측에 명령이 필요합니다. 예를 들어, 다른 명령은 yes ' '왼쪽이 아닌 오른쪽에 |여러 개의 Enter 키를 제공합니다 ../ssr-sim prepare

쉘 스크립트에서 키 입력을 자동화하고 싶고 명령이 ./ssr-sim prepare비밀번호를 여러 번 요청하는 출력을 생성하고 사용자는 Enter매번 수동으로 키를 눌러야 합니다(여기서 비밀번호를 제공할 필요가 없으며 Enter누를 때마다 요청하면 됩니다). ). Enter 키 부분을 자동으로 눌러야합니다.
이 명령은 yes ' ' | ./ssr-sim prepare효과가 없습니다.

답변1

echo대화형 프로그램에 대한 ing 또는 ing 입력이 프로그램을 속이는 데 충분하지 않은 경우 yes이는 일반적으로 입력이 실제로 터미널인지 파이프인지 똑똑하게 확인하려고 하기 때문입니다. 이를 위해서는 사람들이 일반적으로 사용하는 더 큰 망치가 필요합니다.예상되는, 이 문제를 회피하기 위해 작성되었습니다.

답변2

printf \\n%.0b `seq 1 ${NUMBER OF TIMES YOU WANT}` | $CMD

만약 당신의$CMD이 파이프가 마음에 들지 않으면 다음을 시도해 볼 수 있습니다.

printf 'PRESS CTRL+V then ENTER TWICE\n' >&2 ; read -r ENTER

$CMD <<YESALREADY
    $(printf "$ENTER\n%.0b" `seq 1 ${NUMBER OF TIMES YOU WANT}`)
YESALREADY

그래도 문제가 해결되지 않으면 비슷한 솔루션을 찾아야 합니다.expect이미 언급했거나pty.예를 들어,zsh내장되어 있습니다zpty기준 치수.

관련 정보