Réponses:
Vous pouvez utiliser some_commandcomme condition de test.
while ! some_command; do sleep 1; doneLa condition restera vraie tant qu'elle se some_commandtermine avec une erreur.
Ou d'une manière plus détaillée si vous souhaitez effectuer des vérifications supplémentaires:
while ! some_command
do 
    # add more if desired
    sleep 1
donewhile ! some_command; do several; commands; sleep 1; done
                    Voici à quoi sert la untilboucle:
until some_command
do    sleep 1
doneC'est la négation logique d'une whileboucle.
untilboucleLa untilboucle doit exécuter en continu une liste composée tant qu'une autre liste composée a un état de sortie non nul.
Le format de la boucle jusqu'à est le suivant:
    jusqu'à compound-list-1
    faire composé-liste-2
    terminé
untilcommande se termine. Sinon, la liste composée-2 doit être exécutée et le processus se répète.Vous pouvez simplement faire:
false
while [ $? -ne 0 ] ; do
   sleep 1
   some_command
donecela a cependant l'inconvénient qu'il dort toujours une seconde en premier
Si vous voulez pouvoir quitter l'une des nombreuses commandes pour quitter avec 0, vous pouvez faire:
while true; do
  if [ some_command ] ; then break ; fi
  if [ some_other_command ] ; then break ; fi
  sleep 1
donequi bien sûr fonctionne aussi pour seulement some_command
[et ]autour des commandes.
                    Ni while ! ...ne until ...fonctionne sur les systèmes qui ont gelé leur environnement shell avant POSIX.1-2001. Cela, cependant, le fait.
while :; do
    if some command; then
        break
    fi
    sleep 1
doneSi vous n'avez pas besoin d'une portabilité totale, pourquoi écrivez-vous un script shell? Perl est plus susceptible d'être disponible que Bash.
sleep 1 while 0 != system qw(some command);(Comme ci-dessus, le sleep n'est exécuté que si la commande échoue.)