我需要检查容器是否已经存在具有特定名称的容器。 使用相同的if语句,但是容器存在相同的名称,但是我不确定为什么if语句未成功运行。
if [`echo password | sudo -S docker ps -all|grep test|cut -d' ' -f1`]
then
statements
else
statements
存在带有测试名称的容器,但它始终位于else语句内。你能帮我这个忙吗?
答案 0 :(得分:2)
您需要在[
,]
和`
之间留空,即:
if [ `echo password | sudo -S docker ps -all|grep test|cut -d' ' -f1` ]
此外,在最后一行之后还需要fi
。
答案 1 :(得分:0)
除了@ÔHARAKazutaka信息。
-all
不存在,请尝试使用--all
。
--quiet --filter name=test
选项将使使用容器名称的docker
过滤器输出,并在容器存在的情况下将其CONTAINER ID
打印到标准输出。
尝试一下:
container_name=test
container_id=$(echo password | sudo -S docker ps --all --quiet --filter name="${container_name}")
if [ ! -z "${container_id}" ] ; then
printf "%s is the id of the container with name '%s'\n" "${container_id}" "${container_name}"
else
printf "no docker container with name '%s' has been found.\n" "${container_name}"
fi