J'ai du mal à trouver la bonne combinaison de points-virgules et/ou d'accolades. J'aimerais faire ceci, mais en une seule phrase, à partir de la ligne de commande :
while [ 1 ]
do
foo
sleep 2
done
J'ai du mal à trouver la bonne combinaison de points-virgules et/ou d'accolades. J'aimerais faire ceci, mais en une seule phrase, à partir de la ligne de commande :
while [ 1 ]
do
foo
sleep 2
done
while true; do foo; sleep 2; done
À propos, si vous le tapez sur plusieurs lignes (comme vous le montrez) à l'invite de commande et que vous appelez ensuite l'historique avec la flèche vers le haut, vous l'obtiendrez sur une seule ligne, correctement ponctuée.
$ while true
> do
> echo "hello"
> sleep 2
> done
hello
hello
hello
^C
$ <arrow up> while true; do echo "hello"; sleep 2; done
"Si vous le tapez sur plusieurs lignes (comme vous le faites) à l'invite de commande et que vous appelez ensuite l'historique avec la flèche vers le haut, vous l'obtiendrez sur une seule ligne, correctement ponctuée", ce n'était pas vrai pour moi.
Excellent ! Fonctionne parfaitement sur Mavericks (Mac OS-X 10.9) et me permet de garder un vpn en marche. Openconnect se déconnecte après quelques heures avec une erreur de mauvais cookie. Je mets donc la commande openconnect dans un shell script, sudo su pour devenir Root, et j'utilise cette ligne de cmd : while true; do sh /Users/myuser/bin/vpn ; done
Cela fait plus que changer la syntaxe, cela exécute la commande après le sommeil. Dans la réponse précédente, la commande est exécutée immédiatement. Une remarque s'impose.
L'ananas sous la mer : Extrait de la page de manuel de bash : (dans la section COMMANDES DE CONSTRUCTION DE SHELL) : [arguments]
Aucun effet ; la commande ne fait rien d'autre que de développer les arguments et d'effectuer les redirections spécifiées. Un code de sortie de zéro est renvoyé.
Vous pouvez également utiliser until
commandement :
until ((0)); do foo; sleep 2; done
Notez que, contrairement à while
, until
exécute les commandes à l'intérieur de la boucle tant que la condition de test a un statut de sortie différent de zéro.
Utilisation d'un while
boucle :
while read i; do foo; sleep 2; done < /dev/urandom
Utilisation d'un for
boucle :
for ((;;)); do foo; sleep 2; done
Une autre façon d'utiliser until
:
until [ ]; do foo; sleep 2; done
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
Remplacer les nouvelles lignes par des points-virgules. Il en va de même pour les boucles "for".
23 votes
@Tom : cela ne fonctionne pas toujours. après le do, vous devez avoir la première commande, pas un point-virgule.