Bash 스크립트를 통해 일부 프로그램을 제거하고 싶습니다. 명령을 실행한 후 터미널에서 제거할 것인지 묻는 메시지가 나타납니다. 그래서 나는 대답이 필요합니다 y
. 자동으로 하고 y
10초 지연 후에 응답하고 싶습니다 .
이 예제를 만들었지만 작동하지 않습니다.
#!/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
다음으로 바꿀 수 있습니다.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
또는 zsh
와 같은 것을 사용할 수 있습니다 zpty
.
많은 대화형 프로그램은 특정 옵션을 전달하면 특정 비대화형 모드로 들어갈 수 있습니다. 문제를 해결하는 데 너무 많은 노력을 기울이기 전에 설명서를 확인하는 것이 좋습니다.