Значение $()
согласно здесь :
Синтаксис уровня токена, поэтому значение знака доллара зависит от того токена, в котором он находится.Выражение $ (команда) является современным синонимом command
, который обозначает подстановку команды;это означает, что запустите команду и поместите ее вывод здесь.
Для того, чтобы выполнить все перезапуски с последующей паузой, нужно выполнить цикл по строкам в команде $(docker ps --format "{{.Names}}" | grep -v somename)"
и внутри цикла,выполните команду docker restart $line
, а затем sleep 30
(на 30 секунд).
Примерно так:
items=$(docker ps --format "{{.Names}}" | grep -v somename)
for word in items
do
docker restart $word
sleep 30
done
Объяснение:
items=$(docker ps --format "{{.Names}}" | grep -v somename)
Эта строка устанавливает строковую переменную с именем items
, которая содержит все имена контейнеров, разделенных пробелами, как вы делали в исходной команде.
for word in items
автоматически разбивает строку на пробелы, давая вам другоеимя контейнера в каждой итерации цикла for
.
Между
do
и
done
у нас есть код, который выполняется с каждым из словв строке items
, которая является следующей
docker restart $world
Мы перезапускаем контейнер докера, как вы это сделали, но только для одного из контейнеров, его имя читается из $word
.
sleep 30
Мы спим в течение 30 секунд, прежде чем повторить следующую *Значение 1044 *
Однострочная версия
Если вам нужна компактная версия, которая может работать как одна строка, вы можете сделать:
items=$(docker ps --format "{{.Names}}" | grep -v somename);for word in items; do; docker restart $word; sleep 30; done;