Para eso es el yescomando. Produce yuno por línea indefinidamente, por lo que puede canalizarse a comandos que hacen preguntas sí / no.
yes | /opt/MNG/MNGVIEWHP/fe/uninstall
Eso responde ya todas las preguntas. Para responder na todas las preguntas, reemplace yescon yes n. Para una mezcla predefinida de yy n, puede reemplazar yescon:
printf '%s\n' y n n y y n...
O ejecutarlo como:
/opt/MNG/MNGVIEWHP/fe/uninstall << 'EOF'
y
n
n
y
y
n
EOF
Si necesita que la respuesta no esté disponible para leer antes de 10 segundos, haría:
(sleep 10; echo y; sleep 2; echo n;...) | /opt/MNG/MNGVIEWHP/fe/uninstall
Pero eso probablemente no sea necesario, cuando escribamos yen la tubería, estará allí para uninstallleerlo cuando quiera leerlo, es poco probable que tenga que esperar a que esté listo para leerlo. La excepción sería si uninstalldecide vaciar la entrada antes de hacer la pregunta.
Todos los que asumen que el uninstallcomando solo lee cada respuesta como una línea de entrada de su entrada estándar.
Para casos más complejos, donde el comando lee las respuestas directamente desde el dispositivo tty o donde necesita alimentar las respuestas condicionalmente (por ejemplo, en función de lo que genera el comando), ahí es donde usaría cosas como expecto zsh's zpty.
Tenga en cuenta que muchos programas interactivos pueden ingresar a un modo no interactivo cuando se pasa alguna opción. Es posible que desee consultar primero su manual, antes de dedicar demasiado esfuerzo a solucionar el problema.
#! /bin/bash -lugar de#!/usr/bin