无法在Shell脚本中执行If条件

时间:2018-11-26 07:19:05

标签: linux bash shell shellexecute

我需要检查容器是否已经存在具有特定名称的容器。 使用相同的if语句,但是容器存在相同的名称,但是我不确定为什么if语句未成功运行。

if [`echo password | sudo -S docker ps -all|grep test|cut -d' ' -f1`]
then
statements
else
statements
存在带有测试名称的

容器,但它始终位于else语句内。你能帮我这个忙吗?

2 个答案:

答案 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