到目前为止,我习惯像这样停止所有正在运行的 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[@]}"