Para eso es el yes
comando. Produce y
uno por línea indefinidamente, por lo que puede canalizarse a comandos que hacen preguntas sí / no.
yes | /opt/MNG/MNGVIEWHP/fe/uninstall
Eso responde y
a todas las preguntas. Para responder n
a todas las preguntas, reemplace yes
con yes n
. Para una mezcla predefinida de y
y n
, puede reemplazar yes
con:
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 y
en la tubería, estará allí para uninstall
leerlo cuando quiera leerlo, es poco probable que tenga que esperar a que esté listo para leerlo. La excepción sería si uninstall
decide vaciar la entrada antes de hacer la pregunta.
Todos los que asumen que el uninstall
comando 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 expect
o 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