【问题标题】:How to reach else in if?如何在if中达到else?
【发布时间】:2021-06-18 05:26:55
【问题描述】:
if has("data") then
.data
else
"xxxx"
end

下面的第二个命令没有任何输出。但我希望看到“xxxx”。谁能告诉我如何修复可以使用 else 分支的 jq 代码?谢谢。

$ jq -r -f x.jq <<< '{"data": 42}'
42
$ jq -r -f x.jq < /dev/null

【问题讨论】:

  • 现在已修复。

标签: jq


【解决方案1】:

jq 程序总是过滤器。格言“没有输入,没有输出”。正确理解,总是成立,尽管您可以通过使用 -n 选项来实现您真正想要的任何东西,例如使用inputs:

jq -n '(inputs | if ... end) // "xxxx"'

注意:-n 选项实际上提供了 JSON 值 null 作为 jq 程序的输入。这并不意味着“不提供任何意见”。

【讨论】:

  • 我不明白这个。您能否使用-n 而不仅仅是占位符来显示完整的工作命令。另外,我最初问题的目的是关于如何处理非法输入(空输入是一个,但可能还有其他非法输入)。除非存在值不是null 的“数据”键,否则通常如何使jq 在所有非法输入时失败。
  • 再一次,在问题已得到回答并已收到赞成票后,您正在扩展问题。至于完整的工作命令,如果您愿意,可以使用您原来的if ... end
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
相关资源
最近更新 更多