如果出现这种情况,我如何检查 bash 脚本
sudo docker images -q nginx
Run Code Online (Sandbox Code Playgroud)
给我一个结果字符串,这意味着这个容器是存在的
sudo docker images -q nginx
if [ $? != '' ]
then
echo "existing"
else
echo "missing
Run Code Online (Sandbox Code Playgroud)
小智 10
我尝试过,\nas在“最佳答案”中建议,\n但它只返回图像的ID,而不是容器的ID。\xc2\xa0\nNo\xc2\xa0matter如果容器是否正在运行,它总是返回图像\xc2\xa0ID。docker images -q "{Image Name}"
如果你想知道容器是否正在运行,\n你需要\xc2\xa0应用以下命令:
\ndocker ps -q -f name=" {容器名称} "\n
如果容器存在并且正在运行,则返回容器\xc2\xa0ID。\xc2\xa0\n如果\xc2\xa0不存在,或存在但已停止,则返回空字符串。如果要搜索所有(正在运行和已停止)容器,请对“docker ps”命令使用“-a”参数,如下所示:
\ndocker ps -a -q -f name=" {容器名称} "\n
您还可以按其他字段搜索,例如按容器 ID 搜索:
\ndocker ps -a -q -f id=" {容器ID} "\n
有关更多详细信息,请参阅官方“docker ps”文档。
\n$?
不是字符串,而是sudo
(在这种情况下)的退出状态。要正确使用,以进行比较反对零-gt
,或使用if (( $? ))
(在像贝壳bash
或者ksh93
,做算术评估与(( ... ))
)。
如果sudo docker images -q nginx
在容器存在时给你一个字符串,如果不存在则给你一个字符串,那么你可以将它存储在一个变量中,看看它是否为空:
result=$( sudo docker images -q nginx )
if [[ -n "$result" ]]; then
echo "Container exists"
else
echo "No such container"
fi
Run Code Online (Sandbox Code Playgroud)