`jq`에서 디버깅하는 방법

`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