Come eseguire il debug in `jq`

Alcuni suggerimenti per usare la funzione `debug`


jq include un comodo filtro debug. Usalo mentre sviluppi le soluzioni degli esercizi per ispezionare i dati che si trovano attualmente nella pipeline di jq.

debug stampa un «array di debug» su stderr. Restituisce l'input invariato. Il primo elemento dell'array è la stringa "DEBUG:". Il secondo elemento dipende da come chiami debug.

  1. la funzione debug a zero argomenti inserisce una rappresentazione compatta dell'input nell'array di debug:

    jq -n '[11, 22, 33] | debug | map(. * 2)'
    

    produce

     ["DEBUG:",[11,22,33]]
     [
       22,
       44,
       66
     ]
    
  2. la versione a un argomento passa l'input attraverso il filtro specificato:

    jq -n '[11, 22, 33] | debug("length: \(length), last: \(.[-1])") | map(. * 2)'
    
     ["DEBUG:","length: 3, last: 33"]
     [
       22,
       44,
       66
     ]
    

    Il filtro non deve necessariamente essere una stringa. Può essere qualsiasi cosa, comprese più espressioni separate da virgola per un output di debug su più righe:

    jq -n '[11, 22, 33] as $a | 44 | debug("I am here:", $a, .)'
    
    ["DEBUG:","I am here:"]
    ["DEBUG:",[11,22,33]]
    ["DEBUG:",44]
    44