Comment boucler 3 fois dans le script bash lorsque la poussée du docker échoue?

9

J'ai un script bash qui simplement docker pousse une image:

docker push $CONTAINER_IMAGE:latest

Je veux faire une boucle 3 fois lorsque cela échoue. Comment dois-je y parvenir?

ALH
la source

Réponses:

22

Utiliser for-loopet && break:

for n in {1..3}; do
    docker push $CONTAINER_IMAGE:latest && break;
done

breakquitte la boucle, mais ne s'exécute qu'en cas de docker pushréussite. En cas d' docker pushéchec, il se terminera avec une erreur et la boucle continuera.

pLumo
la source
4
Techniquement, OP veut qu'il boucle trois fois lorsqu'il échoue . Alors, le compteur de boucle ne devrait-il pas être 4 ?
RonJohn
5

Vous pouvez aussi utiliser :

for n in {1..3}; do
     if docker push $CONTAINER_IMAGE:latest  
     then 
          break;
     fi
done

L' theninstruction sera entrée uniquement si la commande docker réussit.

arna
la source