shellcheck 与 Docker

shellcheck 与 Docker

到目前为止,我习惯像这样停止所有正在运行的 Docker 容器:

docker stop $(docker ps -q)

现在我已经用过外壳检查,它告诉我:

Quote this to prevent word splitting.shellcheck(SC2046)

所以我想出了这个:

docker stop "$(docker ps -q)"

当执行这个时,我得到

Error response from daemon: 404 page not found

现在我尝试了,echo "$(docker ps -q)"结果是

f52fe2dfaf9c
c790ee0dc828
a7a5a8c158fd

我在这里做错了什么?

更新:

的输出docker stop $(docker ps -q)

f52fe2dfaf9c
c790ee0dc828
a7a5a8c158fd

答案1

这是极少数情况下可能需要进行分词的情况之一。更明确的方法是将输入读入大批:

IFS=' ' read -a container_ids -r <<< "$(docker ps -q)"
docker stop "${container_ids[@]}"

相关内容