Wie kann ich im Bash-Skript dreimal eine Schleife ausführen, wenn der Docker-Push fehlschlägt?

9

Ich habe ein Bash-Skript, das Docker einfach ein Bild pusht:

docker push $CONTAINER_IMAGE:latest

Ich möchte dreimal schleifen, wenn dies fehlschlägt. Wie soll ich das erreichen?

ALH
quelle

Antworten:

22

Verwenden Sie for-loopund && break:

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

breakBeendet die Schleife, wird jedoch nur ausgeführt, wenn dies docker pusherfolgreich war. Wenn dies docker pushfehlschlägt, wird es mit einem Fehler beendet und die Schleife wird fortgesetzt.

pLumo
quelle
4
Technisch will OP es dreimal zu Schleife , wenn es fehlschlägt . Sollte der Schleifenzähler nicht 4 sein ?
RonJohn
5

Sie können auch verwenden:

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

Die thenAnweisung wird nur eingegeben, wenn der Docker-Befehl erfolgreich ist.

arna
quelle