gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:27:20 25 4
gpt4 key购买 nike

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

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

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

{}

目前我在 bash 中使用 -s 来检查是否在输出中发现了重复项:

<"$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 也会发出非零退出状态。


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

关于bash - 如何使用 bash 或 jq 检查 json 是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72563252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com