无法在 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
我需要检查是否已经存在具有特定名称的容器。 使用 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