¿Cómo evitar las interacciones del usuario en un script?

¿Cómo evitar las interacciones del usuario en un script?

Estoy intentando automatizar la instalación de un programa mediante un script de shell. Hay algunos pasos que requieren la interacción del usuario desde la línea de comando (confirmación, sí/no, etc.). ¿Cuál es la mejor manera de evitarlo? Sé que una posibilidad es utilizar un script esperado. Sólo quería saber si existe una forma mejor o más limpia de hacer esto.

Respuesta1

Si la interacción es simple, es decir, solo lee desde la entrada estándar, puedes simplemente enviar las líneas particulares a la entrada del programa:

( echo yes ; echo 1024; echo yes ) | install.sh

Respuesta2

Si desea hacer algo que no se limite a leer desde la entrada estándar (por ejemplo, iniciar sesión mediante ftp), querrá usaresperar.

Respuesta3

De otro hilo:

Si a su comando no le importa qué tan rápido le da entrada y realmente no necesita interactuar con él, entonces puede usar un heredoc.

Ejemplo:

#!/bin/bash
command_you_want_to_execute <<EOD
interaction_1
intereaction_2
EOD

Si necesita bifurcaciones basadas en la salida del programa, o si su programa es sensible al tiempo de sus comandos, entonces lo que desea es Expect.

información relacionada