如何使用 bash 或 jq 检查 json 是否为空?

2023-11-25

我有一个函数可以检查 json 文件内的对象中保存的重复值。当发现重复项时,该函数返回如下内容:

{
  "Basket1": [
    Apple,
    Orange
  ],
  "Basket2": [
    Apple,
    Orange
  ]
}

如果没有找到重复项,则返回空列表:

{}

目前我正在使用-s在 bash 中这样检查输出中是否找到重复项:

<"$baskets" jq -L $HOME 'check_dups' > "$dups"
  if [[ ! -s "$dups" ]];
    then
      echo -e "${RED}[Error]${NC} Duplicates found! Please review duplicates below" >&2
      echo "$(cat "$dups" | jq '.')"
    else
      echo -e "${GREEN}[SUCCESS]${NC} No duplicates found" >&2
  fi

然而,如果没有找到重复项,返回的空对象将导致 bash 中的 -s 文件检查成功。使用 jq 或 bash 检查该函数的输出是否为空对象的最佳方法是什么?


您可以使用error()如果您的输入与以下内容相同,则会导致失败{},否则继续。

jq '
  if . == {} then error("empty document found") else . end
  | ...rest of your processing here...
'

举个简单的例子:

<<<"{}" jq 'if . == {} then error("empty document found") else . end | {"output": (.)}'

...即使没有,也会发出非零退出状态jq -e.


(解决一个问题@Thomas带大,error()具有与输入解析错误不同的退出状态;前者为4,后者为5,编译错误为3;因此,如果需要区分它们,这是完全可能的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 bash 或 jq 检查 json 是否为空? 的相关文章

  • 使用Sed查找并替换json字段

    我有一组 json 文件 其中在最后一个键值对之后有需要替换的逗号 RepetitionTime 0 72 TaskName WM Manufacturer Siemens ManufacturerModelName Skyra Magne
  • bash 自动完成:添加可能完成的描述

    是否可以使 bash 自动完成功能看起来像 Cisco IOS shell 中一样 我的意思是为每个完成添加简短的描述 如下所示 telnet 10 10 10 TAB Pressed 10 10 10 10 routerA 10 10 1
  • execlp 多个“程序”

    我想运行类似的东西 cat file tar base64 myprogram c base64 d tar zvt I use execlp运行该进程 当我尝试运行类似的东西时cat它有效 但如果我尝试运行base64 d tar zvt
  • Bash 脚本:#!/bin/bash 是什么意思? [复制]

    这个问题在这里已经有答案了 在 bash 脚本中 什么是 bin bash第一行是什么意思 UPDATE 有区别吗 bin bash and bin sh 这就是所谓的shebang http en wikipedia org wiki S
  • 如何显示 NUL 分隔数据的中间管道结果?

    如何组合以下两个命令 find print0 grep z pattern tr 0 n find print0 grep z pattern xargs 0 my command 进入单个管道 如果我不需要 NUL 分隔符那么我可以这样做
  • 将 JSON 数组转换为 bash 数组并保留空格

    我想将 JSON 文件转换为 bash 字符串数组 稍后我可以对其进行迭代 我的JSON结构如下 USERID TMCCP CREATED DATE 31 01 2020 17 52 USERID TMCCP CREATED DATE 31
  • 如何将长选项与 Bash getopts 内置一起使用?

    我正在尝试解析 tempBash getopts 的选项 我这样调用我的脚本 myscript temp foo bar someFile 这是我用来解析选项的代码 while getopts temp shots o option do
  • Python3 http.server:将日志保存到文件中

    我使用Python3 6编写了一个简单的HTTP服务器来重定向所有请求 我写的文件可以找到here https github com kmahyyg learn py3 blob master antiscanhttp py 我可以在 Ub
  • 此 bash 命令在 Makefile 中未正确运行

    在 Makefile 里面我有这样的 release version poetry version cut f2 d echo release version 如果我运行 我的终端中的语句将毫无问题地运行 gt version poetry
  • POSIX SH 构建循环变量,其元素包含空格

    这是我需要的代码 bin sh x1 a1 a2 x2 b1 b2 list SOMETHING for x in list do echo x done 以及我想要的输出 a1 a2 b1 b2 问题是 应该做什么SOMETHING是 我
  • 规范化 solaris 上的路径名

    在 GNU 系统上我只会使用readlink f SOME PATH 但 Solaris 没有 readlink 我更喜欢在 bash 中运行良好的程序 但如果需要的话其他程序也可以 Edit 到目前为止 我想到的最好的方法是使用 cd 和
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • 如何将 bash 脚本的整个输出保存到文件

    我正在尝试将 bash 脚本的整个输出保存到文件中 我目前在代码开头有一个参数 ip 地址 如下所示 bin bash USAGE Usage 0
  • 如何显示 zsh 函数定义(如 bash“type myfunc”)?

    如何在 zsh 中显示函数的定义 type foo没有给出定义 在bash中 bash function foo echo hello bash foo hello bash type foo foo is a function foo e
  • 使用 Ansible 将二进制文件添加到 PATH

    我正在尝试安装Kiex https github com taylor kiex版本管理器Elixir http elixir lang org install html使用 Ansible 的编程语言 这些是我为此使用的戏剧 name K
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • 使用正确的头打印文件名

    我想获取当前目录中的文件名 使得文件的第一行等于myWord 我想结合find type f命令与 exec选项与head 1 filename但无济于事 有没有一些聪明的 单行的解决方案来解决这个问题 您可以使用find with awk
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty

随机推荐

  • 向场景添加灯光没有效果

    我刚刚开始玩 Three JS 但我一开始就陷入困境 当我向场景添加灯光时 它没有任何效果 renderer new THREE WebGLRenderer camera new THREE PerspectiveCamera 45 Vie
  • 使用“cv::inRange”(OpenCV) 选择正确的 HSV 上下边界进行颜色检测

    I have an image of a coffee can with an orange lid position of which I want to find Here is it gcolor2 utility shows HSV
  • Shift-Tab 在 Emacs 中产生神秘错误

    我正在尝试学习org mode当我退出 emacs 时 注意到我的文件被整齐地折叠起来 按下时S TAB在尝试展开整个文件时 我在迷你缓冲区中收到以下错误消息 M z is undefined 谷歌搜索错误没有帮助 知道打嗝发生在哪里以及如
  • jstree 类型插件不显示自定义图标

    我有一个简单的 HTML 布局 如下所示 div ul li a href some category 1 a ul li a href some text a li ul ul li a href some text a li ul li
  • 在多个子图上反映事件处理

    我正在尝试创建一个包含 4 个子图的交互式图 理想情况下 单击其中一个子图将在其余子图中产生相同的结果 镜像单击 到目前为止 我只能单独单击它们并使用 mpldatacursor 获取特定数据 在此图中 单击事件将导致所有 4 个图表显示
  • 使用 Toolkit 时 Windows Phone 7 页面转换非常慢

    我遇到的问题是 每当我使用 Windows Phone 7 Toolkit 中的页面转换时 转换速度非常慢 并且整个应用程序似乎有框架掉落 动画 结结巴巴 还有其他人遇到过这种情况吗 我正在使用TransitionFrame类作为 Root
  • django 过滤器 icontains 仅匹配整个单词

    我正在使用过滤器 icontains 来搜索单词 但我只希望它匹配整个单词 例如如果我寻找肝脏 我不希望它返回 我的查询看起来像这样 MyModel objects filter title icontains search word 我见
  • 如何动态创建可在父作用域中访问的函数?

    这是一个例子 function ChildF Creating new function dynamically DynFEx function DynF Hello DynF Invoke Expression DynFEx Callin
  • 计算运输箱尺寸的粗略估计

    我正在尝试找到计算运输所需的箱子尺寸的最佳方法 我有 3 个不同尺寸的集装箱 我在数据库中定义了产品的宽度 长度 深度和质量 我想知道如何找到需要运输的最小箱子数量 以及考虑到购物车中的物品数量 这些箱子的最小尺寸 我当前的 想法 是找到整
  • 常数的哪一个性质使其不可改变?

    今天我面临一次面试 其中有一个问题对我来说非常棘手 面试官说 如何让常数能够改变它的值 我回答 使用指针 并向他展示了一个例子 int main void const int a 3 int ptr ptr int a printf A d
  • PHP、Postgres 帮助使用 RETURNING

    我想我了解 PostgreSQL 和 RETURNING 的工作原理 我找到了很多很多资源 如果我明白的话 它会看起来像 INSERT INTO table column2 column3 VALUES value1 value2 RETU
  • 如何在 Windows 上设置 cmake CXX 变量

    我收到以下错误 正在使用 Microsoft Windows 版本 6 1 7601 ErrorS CMake Warning at CMakeLists txt 4 project To use the NMake generator c
  • Android:打开活动而不保存到堆栈中

    我有 2 个活动 主要活动和列表活动 从 Main 你可以打开 List 从列表中您可以打开Main 我希望列表的每次打开都能如此not被保存到 历史 中 所以 从 Main 返回cannot返回列表 是否可以 当开始你的清单时Activi
  • libc.so.6 在 Linux 内核中的相关性 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我的问题是Linux内核是否包含libc so 6 经过谷歌搜索并浏览不同的链接后 我们发现libc so 6 不是 Linux 内核的一部分 因为内核在内核空间中为自己的使用而实现
  • JUnit 测试类未显示在 JMeter 中

    我正在尝试使用 JMeter 2 7 运行 JUnit 测试 但是 当在 JUnit 采样器的下拉列表中选择测试类时 它们不会显示 据我发现 这是因为测试类是从另一个类扩展的 AbstractJUnit4SpringContextTests
  • String 中的 Java Date 对象无法正常工作

    我遇到了一个似乎无法解决的顽固问题 我在 stackoverflow 上寻找解决方案 并找到了很多关于 Java 日期格式化的帖子 但没有具体针对我遇到的问题 基本上 我需要将日期字符串转换为 java util Date 对象 我正在使用
  • mongoDB中字符串字段值长度

    该字段的数据类型是String 我想获取字段名称字符长度大于 40 的数据 我尝试了这些查询但返回错误 1 db usercollection find where this name length gt 40 limit 2 output
  • 使用 Core Data 检索唯一结果集

    我有一个基于核心数据的应用程序 用于管理一堆实体 我希望能够执行以下操作 我有一个实体 SomeEntity 其属性为 名称 类型 等级 foo1 foo2 现在 如果我们严格按照 SQL 术语来讲 SomeEntity 有几行 我想要完成
  • ?android:attr/selectableItemBackground 与另一个现有背景

    我有一个 9patch 设置为布局的背景 但是我仍然想通过使用提供触摸反馈selectableItemBackground attr 我尝试过使用
  • 如何使用 bash 或 jq 检查 json 是否为空?

    我有一个函数可以检查 json 文件内的对象中保存的重复值 当发现重复项时 该函数返回如下内容 Basket1 Apple Orange Basket2 Apple Orange 如果没有找到重复项 则返回空列表 目前我正在使用 s在 ba