You need to enable JavaScript to run this app. 如何通过Shell脚本判断Docker用户是否已完成登录
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell脚本判断Docker用户是否已完成登录

Shell脚本判断Docker用户登录状态的实现方案

判断Docker配置中auths字段是否为空,最可靠的方式是借助JSON处理工具jq实现,具体方案如下:

前置准备:安装jq

jq是Shell环境下的轻量JSON处理工具,不同系统安装命令:

  • Debian/Ubuntu系:sudo apt install jq
  • RHEL/CentOS系:sudo yum install jq
  • macOS:brew install jq

核心判断逻辑

通过jq读取auths字段的键数量:数量为0代表未登录,大于0代表已登录(即使授权信息存储在外部凭据管理器credsStore中,登录后auths下也会保留对应镜像仓库的键,和你给出的配置示例特征完全匹配)

完整脚本示例

#!/bin/bash
# 你已经存入变量的配置内容可以直接复用
docker_login_info=$(cat ~/.docker/config.json 2>/dev/null)

# 先处理配置文件不存在的异常场景
if [ -z "$docker_login_info" ]; then
    echo "未找到Docker配置文件,用户未登录"
    exit 1
fi

# 计算auths字段下的键数量
auth_count=$(echo "$docker_login_info" | jq '.auths | length')

if [ "$auth_count" -eq 0 ]; then
    echo "用户未登录Docker"
    # 此处可添加未登录时的业务逻辑
else
    echo "用户已登录Docker"
    # 此处可添加已登录时的业务逻辑
fi

无jq环境的应急方案(不推荐)

如果环境无法安装jq,可以用正则匹配的方式判断,缺点是JSON格式化规则变化时可能出现判断误差:

if echo "$docker_login_info" | grep -q '"auths":\s*{\s*}'; then
    echo "用户未登录Docker"
else
    echo "用户已登录Docker"
fi

内容的提问来源于stack exchange,提问作者Neha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 22:15:11