You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jq在Bash脚本中判断仓库响应是否含非点文件与README内容?

问题解决:Bash脚本中通过jq判断仓库内容类型

可以通过jq的条件判断和过滤能力精准识别三种响应类型,以下是修改后的完整脚本:

#!/bin/bash

for repo_name in "${repos_name[@]}"; do
    content=$(curl -s http://example.com/$repo_name)
    
    # 判断仓库是否不存在
    if echo "$content" | jq -e '.message == "The repo doesn'"'"'t exist"' >/dev/null; then
        echo "仓库 $repo_name 不存在"
        continue
    fi

    # 判断是否存在有效内容:至少有一个文件既不是点文件也不是README.md
    if echo "$content" | jq -e 'all(.[]; .name | startswith(".") or .name == "README.md") | not' >/dev/null; then
        # 此处执行目标命令
        echo "仓库 $repo_name 存在有效内容,执行命令..."
        # your_command_here
    else
        echo "仓库 $repo_name 存在但无有效内容"
    fi
done

关键jq逻辑解释

  • .message == "The repo doesn'"'"'t exist":检查响应是否为“仓库不存在”的JSON对象,Bash中单引号通过'"'"'转义;-e参数让jq根据判断结果返回对应退出码(true返回0,false返回1),适配Bash的条件判断。
  • all(.[]; .name | startswith(".") or .name == "README.md") | not:先判断所有文件是否都是点文件或README.md,再取反,等价于“存在至少一个既不是点文件也不是README.md的有效文件”,写法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:01:04