¿Cómo respondo automáticamente y en el script bash?

Pregunta:

Quiero desinstalar algún programa a través de un script bash. Después de ejecutar el comando, el terminal me pregunta si estoy seguro de que quiero desinstalarlo. Entonces necesito responder y . Quiero hacerlo automáticamente y responder y después de un retraso de 10 segundos.

Hice este ejemplo pero no funciona.

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

¿Alguna idea? Centos 7.2

Respuesta:

Para eso es el comando yes . Genera y s uno por línea de forma indefinida, por lo que se puede canalizar a los comandos que hacen preguntas de sí / no.

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

Que las respuestas y a todas las preguntas. Para responder n a todas las preguntas, reemplace yes por yes n . Para una combinación predefinida de y y n , puede reemplazar yes con:

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

O ejecútelo 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 los 10 segundos, debe hacer lo siguiente:

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

Pero eso probablemente no sería necesario, cuando escribimos y en la tubería, estará allí para que la uninstall lea cuando quiera leerlo, es poco probable que tenga que esperar a que esté listo para leerlo. La excepción sería si la uninstall decide eliminar la entrada antes de hacer la pregunta.

Todos asumen que el comando de uninstall solo lee cada respuesta como una línea de entrada de su entrada estándar.

Para los casos más complejos, en los que el comando lee las respuestas directamente desde el dispositivo TTY o donde necesita respuestas de alimentación de forma condicional (por ejemplo, sobre la base de lo que las salidas de comando), que de donde debería usar cosas como expect o zsh 's zpty .

Tenga en cuenta que muchos programas interactivos pueden entrar en algún modo no interactivo cuando se les pasa alguna opción. Es posible que desee consultar su manual primero, antes de dedicar demasiado esfuerzo a solucionar el problema.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım