Je veux désinstaller un programme via un script bash. Après avoir exécuté la commande, le terminal me demande si je suis sûr de vouloir le désinstaller. Je dois donc répondre y
. Je veux le faire automatiquement et répondre y
après un délai de 10 secondes.
J'ai fait cet exemple mais ça ne marche pas -
#!/usr/bin
/opt/MNG/MNGVIEWHP/fe/uninstall
sleep 10
echo "y"
Une idée? Centos 7.2
#! /bin/bash -
au lieu de#!/usr/bin
uninstall
programme accepte ou non des paramètres ou un script de configuration. Ce sera plus facile de cette façonuninstall
et attendez qu'il se termine. Dormez ensuite 10 secondes. Ensuite,y\n
faites écho à stdout (qui est toujours connecté au terminal, pas à stdin de tout programme)Réponses:
C'est à cela que
yes
sert la commande. Il produity
s un par ligne indéfiniment afin qu'il puisse être dirigé vers des commandes qui posent des questions oui / non.Cela répond
y
à toutes les questions. Pour répondren
à toutes les questions, remplacezyes
paryes n
. Pour un mélange prédéfini dey
etn
, vous pouvez remplaceryes
par:Ou exécutez-le en tant que:
Si vous avez besoin que la réponse ne soit pas disponible pour la lecture avant 10 secondes, vous feriez:
Mais cela ne serait probablement pas nécessaire, lorsque nous écrivons
y
sur le tuyau, il sera là pouruninstall
le lire chaque fois qu'il veut le lire, il est peu probable que vous ayez besoin d'attendre qu'il soit prêt à le lire. L'exception serait siuninstall
décide de vider l'entrée avant de poser la question.Tous ceux qui supposent que la
uninstall
commande lit simplement chaque réponse comme une ligne d'entrée à partir de son entrée standard.Pour les cas plus complexes, où la commande se lit comme suit les réponses directement à partir du dispositif TTY ou lorsque vous avez besoin de réponses d'alimentation sous condition (par exemple en fonction de ce que les sorties de commande), qui est là que vous voulez utiliser des choses comme
expect
ouzsh
d »zpty
.Notez que de nombreux programmes interactifs peuvent entrer dans un mode non interactif lorsqu'ils passent une option. Vous voudrez peut-être consulter leur manuel avant de consacrer trop d'efforts à contourner le problème.
la source
echo "y"
, à chaque fois, nous écrivonsy<newline>
, en vous simulant en appuyant sury
puis sur Entrée. Si vous voulez simuler en appuyant sur Entrée seul, cela alimenterait une ligne vide, alorsprintf '%s\n' y n '' 2 3
(où''
est la ligne vide).