web-dev-qa-db-fra.com

Comment écrire une réponse "oui" à un script pour l'installation de programmes?

Je travaille avec des instances Amazon Linux et j'ai quelques scripts pour renseigner des données et installer tous les programmes avec lesquels je travaille, mais quelques-uns des programmes demandent:

Do you want to continue [Y/n]?

et mettre en pause l'installation. Je veux répondre automatiquement "Y" dans tous les cas, je sais maintenant comment le faire.

90
user974887

Le commande 'oui' fera écho 'y' (ou ce que vous lui demandez) indéfiniment. Utilisez-le comme:

yes | command-that-asks-for-input

ou, si un "Y" majuscule est requis:

yes Y | command-that-asks-for-input
173
P.T.

echo y | command devrait marcher.

En outre, certains installateurs ont un indicateur "auto-yes". C'est -y pour apt-get sur Ubuntu.

57
Dennis

Il est possible que vous ne puissiez pas installer Expect sur le serveur cible. C'est souvent le cas quand on écrit, par exemple, un travail de Jenkins.

Si oui, je considérerais quelque chose comme la réponse à la question suivante sur askubuntu.com:

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

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

Notez que dans certains cas rares, la commande ne nécessite pas que l'utilisateur appuie sur Entrée après le caractère. dans ce cas, laissez les nouvelles lignes:

printf 'yyy' | ./script_that_needs_user_input

Par souci d’exhaustivité, vous pouvez également utiliser un document here:

./script_that_needs_user_input << EOF
y
y
y
EOF

Ou si votre shell supporte une chaîne here:

./script <<< "y
y
y
"

Ou vous pouvez créer un fichier avec une entrée par ligne:

./script < inputfile

Encore une fois, tout le mérite de cette réponse revient à l'auteur de la réponse sur askubuntu.com , lesmana.

14
Nathan Basanese

Bien que cela puisse être plus compliqué/plus lourd que vous ne le souhaitez, une méthode très flexible consiste à utiliser quelque chose comme Expect (ou l’un des dérivés dans un autre langage de programmation).

Expect est un langage spécialement conçu pour contrôler les applications à base de texte. C'est exactement ce que vous cherchez à faire. Si vous devez faire quelque chose de plus compliqué (comme avec la logique pour décider quoi faire/répondre ensuite), Expect est la voie à suivre.

5
Adam Batkin

Si vous voulez simplement accepter les valeurs par défaut, vous pouvez utiliser:

\n | ./Shell_being_run
3
warhansen

Vous avez juste besoin de mettre -y avec la commande install.

Par exemple: yum install <package_to_install> -y

0
Rohan Seth