使用`debug`函数的一些技巧
jq自带一个很方便的debug过滤器。在开发练习解答的过程中,可以用它来查看当前流经 jq 管道的数据。
debug会把一个“调试数组”打印到stderr。它会原样输出输入。数组的第一个元素是字符串“DEBUG:”。第二个元素取决于你如何调用debug。
不带参数的debug函数会把输入的一个紧凑表示放进调试数组:
jq -n '[11, 22, 33] | debug | map(. * 2)'
输出
["DEBUG:",[11,22,33]]
[
22,
44,
66
]
带一个参数的版本会把输入传给指定的过滤器:
jq -n '[11, 22, 33] | debug("length: \(length), last: \(.[-1])") | map(. * 2)'
["DEBUG:","length: 3, last: 33"]
[
22,
44,
66
]
过滤器不必是字符串。它可以是任何东西,包括用逗号分隔的多个表达式,从而得到“多行”的调试输出:
jq -n '[11, 22, 33] as $a | 44 | debug("I am here:", $a, .)'
["DEBUG:","I am here:"]
["DEBUG:",[11,22,33]]
["DEBUG:",44]
44