J'ai un script bash qui utilise la commande read
pour lire les arguments des commandes de manière interactive, par exemple les options oui/non. Existe-t-il un moyen d'appeler ce script dans un script non interactif en passant les valeurs d'option par défaut comme arguments?
Ce n'est pas seulement une option que je dois passer au script interactif.
Pour les tâches plus complexes, il existe expect
( http://en.wikipedia.org/wiki/Expect ). Il simule fondamentalement un utilisateur, vous pouvez coder un script comment réagir à des sorties de programme spécifiques et à des choses connexes.
Cela fonctionne également dans des cas comme ssh
qui interdit de lui attribuer des mots de passe.
Plusieurs façons
dirigez votre entrée
echo "yes
no
maybe" | your_program
rediriger depuis un fichier
your_program < answers.txt
utilisez un ici document (cela peut être très lisible)
your_program << ANSWERS
yes
no
maybe
ANSWERS
utilisez un ici chaîne
your_program <<< $'yes\nno\nmaybe\n'
Vous pouvez mettre les données dans un fichier et le rediriger comme ceci:
$ cat file.sh
#!/bin/bash
read x
read y
echo $x
echo $y
Données pour le script:
$ cat data.txt
2
3
Exécuter le script:
$ file.sh < data.txt
2
3
Je veux juste ajouter un autre moyen. Trouvé ailleurs, et est assez simple. Dites que je veux passer oui pour toutes les invites en ligne de commande pour une commande "execute_command", puis je lui acheminerais simplement oui.
yes | execute_command
Ceci utilisera oui comme réponse à toutes les invites oui/non.