$()按照here的含义是:
语法是令牌级别的,因此美元符号的含义取决于它所在的令牌。表达式 $(command) 是 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
我们像您一样重新启动 docker 容器,但仅针对其中一个容器,其名称从 $word 读取。
sleep 30
我们休眠 30 秒,然后再次迭代下一个 $word 值。
单行版本
如果您想要一个可以作为单行运行的紧凑版本,您可以这样做:
items=$(docker ps --format "{{.Names}}" | grep -v somename);for word in items; do; docker restart $word; sleep 30; done;