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

如何在Bash中检查文件内的JSON是否为空(格式为{})?

用jq检查JSON文件是否为空对象({})

当然可以用jq实现这个需求,下面是几种实用的方法:

方法一:直接对比空对象

使用-e参数让jq根据输出的布尔值设置退出码(true对应退出码0,false对应退出码1),命令如下:

jq -e '. == {}' your_file.json

执行后:

  • 如果文件内容是{},命令会输出true且退出码为0
  • 如果文件内容非空(比如{"key": "value"})或格式错误,会输出false(或报错)且退出码非0

如果只想通过退出码判断,不想看到输出,可以重定向到/dev/null:

jq -e '. == {}' your_file.json > /dev/null && echo "该JSON文件是空对象({})" || echo "该JSON文件不是空对象"

方法二:检查键的数量

空对象没有任何键,所以可以通过统计键的长度来判断:

jq -e 'keys | length == 0' your_file.json

逻辑和方法一完全一致,只是判断方式不同,适合习惯从键的角度思考的场景。

在shell脚本中使用

如果要在脚本里做判断,可以这样写:

#!/bin/bash
JSON_FILE="your_file.json"

if jq -e '. == {}' "$JSON_FILE" > /dev/null; then
    echo "[$JSON_FILE] 是空JSON对象"
else
    echo "[$JSON_FILE] 不是空JSON对象或格式错误"
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:35:26