Як зациклюватися на 3-х разів у скрипті bash, коли докер не натисне?


9

У мене є сценарій bash, який просто докер виштовхує зображення:

docker push $CONTAINER_IMAGE:latest

Я хочу зробити цикл 3 рази, коли це не вдасться. Як я повинен цього досягти?

Відповіді:


22

Використання for-loopта && break:

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

breakвиходить з циклу, але працює лише тоді, коли це docker pushвдалося. Якщо docker pushне вдасться, він вийде з помилкою, і цикл продовжиться.


4
Технічно ОП хоче, щоб він тричі циклічно вийшов із ладу, коли не вдався . Отже, чи не повинен лічильник циклу бути 4 ?
RonJohn

5

Ви також можете використовувати:

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

thenЗаява буде введено тільки якщо команда докер успішно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.