jq 对于空输入不会返回非零值

问题描述 投票:0回答:2

我有这行代码可以按预期工作:

echo '{"slot":"we"}' | jq -re '.slot' || exit 1

但是,即使我希望如此,这段代码也不会引发错误:

echo ' ' | jq -re '.slot' || exit 1

这也不是:

echo '' | jq -re '.slot' || exit 1

如果找不到

slot
键,我如何确保它会引发错误?我的意思是,在最后两个示例中,退出代码都是 0

json jq
2个回答
0
投票

为此,一个想法可以是使用 grep 和选项

-q
来传输 jq 命令。

此选项检查输出是否包含任何字符,如果不包含则退出 1

echo ' ' | jq -re '.slot' | grep -q . || exit 1

0
投票

您的代码在 jq 1.7 上运行良好。如果您使用的是 jq 1.6,您需要这个:

jq -nre 'inputs.slot'
© www.soinside.com 2019 - 2024. All rights reserved.