使用`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