请求明确jq中boolean_expression的精确定义及判定规则
jq中
select过滤器的boolean_expression精确定义 jq手册里提到的select过滤器所需的boolean_expression,并非要求严格的布尔类型值,而是遵循jq内置的真值判断规则:只有false和null会被判定为“假”,所有其他类型的值(包括0、负数、非空字符串、对象、数组等)全部被判定为“真”。
结合你给出的示例,对应规则的表现如下:
jq -n '1,2 | select(null)':null被判定为假,无输出jq -n '1,2 | select(empty)':empty会生成零个值,相当于没有符合条件的输入,无输出jq -n '1,2 | select(42)':数值42被判定为真,保留输入的1和2jq -n '1,2 | select(-1.23)':负数-1.23被判定为真,保留输入的1和2jq -n '1,2 | select({a:"strange"})':非空对象被判定为真,保留输入的1和2jq -n '1,0,-1,null,false,42 | select(.)':select(.)用输入值自身做判断,0、-1、1、42均为真,null和false为假,最终输出1 0 -1 42
内容的提问来源于stack exchange,提问作者jpseng
相关产品推荐
相关产品推荐

