2011-10-04 3 views
53

que trabajar con instancias de Amazon Linux y tengo un par de guiones para rellenar los datos e instalar todos los programas con los que trabajo, pero un par de los programas de preguntar:¿Cómo configuro una respuesta "sí" para instalar programas?

Do you want to continue [Y/n]? 

y pausar la instalación. Quiero responder automáticamente "S" en todos los casos, ahora estoy seguro de cómo hacerlo.

+3

El administrador de paquetes puede tener un indicador '--noprompt' o' --noconfirm' que puede usar. – Blender

Respuesta

87

El 'yes' command hará eco 'y' (o lo que sea que le pidas) indefinidamente. Utilizarlo como:

yes | command-that-asks-for-input 

o, si se requiere un capital de 'Y':

yes Y | command-that-asks-for-input 
+0

¿Esto solo funciona con algún comando compatible para usar la entrada de sí, no es así? He intentado con la mirada de OpenStack y esto no funciona, creo que Esperar es más preciso para todas las circunstancias – HVNSweeting

+1

//, ¿Qué pasa si tiene que escribir la palabra completa "sí"? –

+2

@NathanBasanese Ejecute el comando 'yes yes' – Dylan

3

Aunque esto puede ser más complicado/más pesado de lo que desea, una forma muy flexible de hacerlo es usar algo como Expect (o uno de los derivados en otro lenguaje de programación).

Expect es un lenguaje diseñado específicamente para controlar aplicaciones basadas en texto, que es exactamente lo que estás buscando hacer. Si termina necesitando hacer algo más complicado (como con la lógica para decidir realmente qué hacer/responder a continuación), esperar es el camino a seguir.

32

echo y | command debería funcionar.

Además, algunos instaladores tienen un indicador de "auto-sí". Es -y para apt-get en Ubuntu.

+0

Estoy tratando de hacer eco "giturl no" | jspm registry create registry_name jspm-git en mi script de shell. pero sigue fallando. mientras ingresas al giurl. ¿Alguna idea? – manismku

+0

Otro ejemplo: en docker-compose hay un indicador '-f' (' --force') que funciona como "auto-yes" para comandos que eliminan algo – luke

+0

¿Cómo se hace "eco Y" recursivamente en caso de que el mensaje pregunte por una confirmación más de una vez? –

7

//, Puede que no tenga la capacidad de instalar el esperado en el servidor de destino. Este es a menudo el caso cuando uno escribe, digamos, un trabajo de Jenkins.

Si es así, consideraría algo así como la respuesta a la siguiente en askubuntu.com:

https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line

printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input 

Tenga en cuenta que en algunos casos raros, el comando no requiere que el usuario pulse entrar después del personaje. en ese caso, deje los saltos de línea Salida:

printf 'yyy' | ./script_that_needs_user_input 

Para mayor abundamiento también se puede utilizar una aqui documento:

./script_that_needs_user_input << EOF 
y 
y 
y 
EOF 

O si su cáscara soporta una aquí cadena:

./script <<< "y 
y 
y 
" 

O puede crear un archivo con una entrada por línea:

./script < inputfile 

Una vez más, todo el mérito de esta respuesta corresponde al autor de la respuesta en askubuntu.com, @lesmana.

+0

//, por favor asegúrese de votar al usuario de askubuntu.com @lesmana si le gusta esta respuesta. –

Cuestiones relacionadas