bash 스크립트에서 y에 자동으로 어떻게 대답합니까?


15

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

이 예제를 수행했지만 작동하지 않습니다.

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

어떤 생각? 센 토스 7.2


6
ITYM, #! /bin/bash -대신#!/usr/bin
Stéphane Chazelas

uninstall프로그램이 매개 변수 또는 구성 스크립트를 허용 하는지 확인하십시오 . 그렇게 쉬울 것입니다
phuclv

1
웹에서 광고 구역이 있는지 묻고 답했습니다 . " 작동하지 않습니다" 는 문제를 잘 설명하지 않습니다. 아마도 당신은 당신의 문제가 수많은 다른 사람들과 어떻게 다른지 말할 수 있습니다.

2
스크립트가 실제로하는 일 : 실행 uninstall하고 종료 될 때까지 기다립니다. 그런 다음 10 초간 자십시오. 그런 다음 y\nstdout에 반향하십시오 (여전히 프로그램에 연결되지 않고 터미널에 연결되어 있음)
Peter Cordes

답변:


49

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

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

그것은 y모든 질문에 대한 답입니다. 대답하기 위해 n모든 질문에 교체 yesyes n. y및 의 사전 정의 된 혼합의 n경우 다음으로 바꿀 수 있습니다 yes.

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이나 zshzpty.

많은 대화식 프로그램은 일부 옵션을 전달할 때 일부 비 대화식 모드로 들어갈 수 있습니다. 문제를 해결하기 위해 너무 많은 노력을 기울이기 전에 먼저 설명서를 확인하십시오.


감사! 하나의 질문에 대해서만 답변해야하는 경우에 좋습니다. 예를 들어 20 가지 질문에 답해야한다면 어떻게 되었습니까?
Shalev Sason

@Shalev, 편집 참조
Stéphane Chazelas

감사 ! 따라서 interger와 같은 다른 값을 입력하려면 (예 : 2) "y"대신 값을 바꿔야합니까? printf '% s \ n'ynnyyn 2 3 뉴욕 | / opt / MNG / MNGVIEWHP / fe / uninstall
Shalev Sason

그렇습니다.
Stéphane Chazelas

3
@ShalevSason는 모든 솔루션에 내가와 같은 준 적이 echo "y"때마다, 우리는 쓰기 y<newline>, 당신을 압박하여 시뮬레이션 y입력 하였다. 당신은 빈 줄이 공급 될 것이라고, 혼자 Enter 키를 눌러 시뮬레이션하려면, 그래서 printf '%s\n' y n '' 2 3(여기서 ''빈 라인입니다).
Stéphane Chazelas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.