Est-il possible qu'un script bash gère automatiquement les invites qui seraient normalement présentées à l'utilisateur avec des actions par défaut? Actuellement, j'utilise un script bash pour appeler un outil interne qui affichera des invites à l'utilisateur (demandant O / N) pour terminer les actions, mais le script que j'écris doit être complètement "sans intervention", donc J'ai besoin d'un moyen d'envoyer Y|N
à l'invite pour permettre au programme de continuer l'exécution. Est-ce possible?
109
yes
pour faire ceci: unix.stackexchange.com/questions/47344/…Réponses:
Ce n'est pas de la "complétion automatique", c'est de l'automatisation. Un outil commun pour ces choses est appelé Expect .
Vous pourriez également vous en sortir avec une simple entrée de tuyauterie
yes
.la source
yes
fait l'affaire, heureusement, toutes les invites ne nécessitaient qu'un «y» de toute façon. Merci.Yes | command
cela ne fonctionne pas toujours. Si c'est juste à des fins d'installation, je suis tombé en utilisant-y
une option meilleure et préférée.Un simple
Cela vous permet de transmettre n'importe quelle séquence de "Y" ou "N" à votre script.
la source
N
Y, j'aurais utilisé cette méthode, mais je n'avais besoin que de Y alors je suis allé avecyes
. Dommage que je ne puisse pas accepter deux réponses, car elles sont toutes les deux correctes.N
vous avez maintenant un bon moyen de le faire."Y N"
comme entrée à la première invite et se bloque sur la deuxième invite en attendant que je la complète. J'ai essayé de changer les espaces en nouvelles lignes mais cela n'a pas fonctionné non plus, j'ai quand même donné une chaîne littérale à l'invite.printf 'y\ny\ny\n' | ./your_script
. De cette façon, vous insérez manuellement la nouvelle ligne pour chaque entrée attendue.printf '%s\n' Y Y N N Y N Y Y N
met des retours à la ligne entre les éléments, mais sans avoir besoin d'une chaîne de grand format.J'ai trouvé que le meilleur moyen d'envoyer une entrée est d'utiliser cat et un fichier texte pour transmettre toute entrée dont vous avez besoin.
la source
Si vous n'avez que Y à envoyer:
Si vous n'avez que N à envoyer:
la source
Dans ma situation, j'avais besoin de répondre à certaines questions sans O ou N mais avec du texte ou du blanc. J'ai trouvé que le meilleur moyen de faire cela dans ma situation était de créer un fichier shellscript. Dans mon cas, je l'ai appelé autocomplete.sh
J'avais besoin de répondre à quelques questions pour un exportateur de schéma de doctrine, donc mon fichier ressemblait à ceci.
- Ceci est un exemple seulement -
Ce que j'aime dans cette stratégie, c'est que vous pouvez commenter vos réponses et utiliser EOF une ligne vide est juste cela (la réponse par défaut). Il s'avère que cet outil d'exportateur a son propre équivalent JSON pour répondre à ces questions, mais je l'ai compris après avoir fait ceci =).
pour exécuter le script, soyez simplement dans le répertoire souhaité et exécutez-le
'sh autocomplete.sh'
dans le terminal.En bref, en utilisant << EOL & EOF en combinaison avec les lignes de retour, vous pouvez répondre à chaque question de l'invite si nécessaire. Chaque nouvelle ligne est une nouvelle réponse.
Mon exemple montre simplement comment cela peut être fait avec des commentaires en utilisant également le caractère `afin que vous vous souveniez de chaque étape.
Notez que l'autre avantage de cette méthode est que vous pouvez répondre avec plus que Y ou N ... en fait, vous pouvez répondre avec des blancs!
J'espère que cela aide quelqu'un.
la source
Il existe un utilitaire spécial intégré pour cela - « oui ».
Pour répondre à toutes les questions avec la même réponse, vous pouvez exécuter
Ou vous pouvez le mettre dans votre script pour avoir une réponse spécifique à chaque question
la source