Bash 스크립트에서 y에 자동으로 응답하는 방법은 무엇입니까?

Bash 스크립트에서 y에 자동으로 응답하는 방법은 무엇입니까?

Bash 스크립트를 통해 일부 프로그램을 제거하고 싶습니다. 명령을 실행한 후 터미널에서 제거할 것인지 묻는 메시지가 나타납니다. 그래서 나는 대답이 필요합니다 y. 자동으로 하고 y10초 지연 후에 응답하고 싶습니다 .

이 예제를 만들었지만 작동하지 않습니다.

#!/usr/bin
/opt/MNG/MNGVIEWHP/fe/uninstall
sleep 10
echo "y"

어떤 아이디어가 있나요? 센토스 7.2

답변1

이것이 바로 이 yes명령의 목적입니다. 한 줄에 하나씩 출력 y되므로 예/아니요 질문을 묻는 명령으로 파이프될 수 있습니다.

yes | /opt/MNG/MNGVIEWHP/fe/uninstall

이것은 y모든 질문에 대한 답변입니다. n모든 질문에 답하려면 로 바꾸십시오 yes. 사전 정의된 및 의 조합을 yes n다음으로 바꿀 수 있습니다.ynyes

printf '%s\n' y n n y y n...

또는 다음을 실행하세요.

/opt/MNG/MNGVIEWHP/fe/uninstall << 'EOF'
y
n
n
y
y
n
EOF

10초 이내에 답변을 읽을 수 없게 만들고 싶다면 다음과 같이 하세요.

(sleep 10; echo y; sleep 2; echo n;...) | /opt/MNG/MNGVIEWHP/fe/uninstall

y그러나 이것이 필요하지 않을 수도 있습니다. 파이프 에 쓸 때 파이프는 uninstall원할 때마다 읽을 수 있으므로 읽을 준비가 될 때까지 기다릴 필요가 없습니다. uninstall질문을 하기 전에 입력을 새로 고치기로 결정한 경우는 예외입니다 .

이 모든 것은 uninstall명령이 단순히 각 답변을 표준 입력의 입력 행으로 읽는다고 가정합니다.

명령이 tty 장치에서 직접 응답을 읽거나 조건부로 응답을 제공해야 하는(예: 명령 출력 내용에 따라) 더 복잡한 경우에는 expect또는 zsh와 같은 것을 사용할 수 있습니다 zpty.

많은 대화형 프로그램은 특정 옵션을 전달하면 특정 비대화형 모드로 들어갈 수 있습니다. 문제를 해결하는 데 너무 많은 노력을 기울이기 전에 설명서를 확인하는 것이 좋습니다.

관련 정보