Jak zapętlić się 3 razy w skrypcie bash, gdy nie powiedzie się wypychanie dokera?

9

Mam skrypt bash, który po prostu doker wypycha obraz:

docker push $CONTAINER_IMAGE:latest

Chcę zapętlić się 3 razy, gdy to się nie powiedzie. Jak mam to osiągnąć?

ALH
źródło

Odpowiedzi:

22

Użyj for-loopi && break:

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

breakwychodzi z pętli, ale działa tylko po pomyślnym zakończeniu docker push. Jeśli się docker pushnie powiedzie, zakończy działanie z błędem i pętla będzie kontynuowana.

pLumo
źródło
4
Technicznie rzecz biorąc, OP chce, aby zapętlał się trzy razy, gdy zawiedzie . Czy więc licznik pętli nie powinien wynosić 4 ?
RonJohn
5

Możesz także użyć :

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

thenOświadczenie zostaną wprowadzone wyłącznie wtedy, gdy komenda doker powiedzie.

arna
źródło