چگونه در `jq` debug کنیم

چند نکته برای استفاده از تابع `debug`


jq یک فیلتر کاربردی debug دارد. هنگام توسعه‌ی راه‌حل‌های تمرینتان از آن استفاده کنید تا داده‌ای را که در آن لحظه در پایپ‌لاین jq قرار دارد بررسی کنید.

debug یک آرایه‌ی debug را روی stderr چاپ می‌کند. ورودی را بدون تغییر بیرون می‌دهد. اولین عنصر آرایه رشته‌ی «DEBUG:» است. عنصر دوم بستگی دارد به اینکه debug را چگونه فراخوانی می‌کنید.

  1. تابع debug بدون آرگومان، نمایشی فشرده از ورودی را در آرایه‌ی debug قرار می‌دهد:

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

    خروجی:

     ["DEBUG:",[11,22,33]]
     [
       22,
       44,
       66
     ]
    
  2. نسخه‌ی تک‌آرگومانی، ورودی را از فیلتر داده‌شده عبور می‌دهد:

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

    فیلتر لازم نیست رشته باشد. می‌تواند هر عبارتی باشد، از جمله چند عبارت جدا‌شده با کاما برای گرفتن خروجی debug به‌صورت «چندخطی»:

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