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

Unable to execute the If condition in shell script

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

if [`echo password | sudo -S docker ps -all|grep test|cut -d' ' -f1`]
then
statements
else
statements

存在带有测试名称的容器,但它总是在 else 语句中。你能帮我解决这个问题吗?

您需要在 []` 之间留空,即:

if [ `echo password | sudo -S docker ps -all|grep test|cut -d' ' -f1` ]

此外,最后一行后需要 fi

除了@ÔHARA Kazutaka 的信息。

-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