Como fazer um loop por 3 vezes no script bash quando o envio do docker falha?

9

Eu tenho um script bash que simplesmente docker empurra uma imagem:

docker push $CONTAINER_IMAGE:latest

Eu quero fazer um loop por 3 vezes quando isso falhar. Como devo conseguir isso?

ALH
fonte

Respostas:

22

Use for-loope && break:

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

breaksai do loop, mas só é executado quando for docker pushbem-sucedido. Se docker pushfalhar, ele sairá com erro e o loop continuará.

pLumo
fonte
4
Tecnicamente, o OP deseja que ele faça um loop três vezes quando falhar . Então, o contador de loop não deve ser 4 ?
9119 RonJohn
5

Você também pode usar :

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

A theninstrução será inserida apenas se o comando docker for bem-sucedido.

arna
fonte