조건

조건문 에서 jq

7개의 연습 문제

조건문 소개

if 표현식

jq의 조건 표현식은 if A then B else C end예요.

if-then-else는 모든 jq 내장 함수처럼 필터예요. 입력을 받아 출력을 만들어요.

표현식 A가 "참 같은" 값을 만들면 if 필터는 B를 평가해요. 그렇지 않으면 C를 평가해요. if 필터의 입력은 B나 C로 전달돼요.

42 | if . < 50 then "small" else "big" end      # => "small"
5 | if . % 2 == 0 then . / 2 else . * 4 end     # => 20
Note

else 절은 생략할 수 있어요. 다음 두 문은 서로 같아요.

if A then B else . end
if A then B end

중첩 if문

elif로 조건을 더 추가할 수 있어요.

42 | if . < 33 then "small"
     elif . < 66 then "medium"
     else "big"
     end
# => "medium"

elif 절은 필요한 만큼 사용하면 돼요.

참과 거짓

jq에서 "거짓"인 값은 false와 null뿐이에요. 나머지는 모두 "참"이에요. 숫자 0, 빈 문자열, 빈 배열, 빈 객체도 마찬가지예요.

불리언 연산자

불리언 연산자 and와 or를 사용하면 복잡한 쿼리를 만들 수 있어요.

42 | if . < 33 or . > 66 then "big or small"
     else "medium"
     end

부정하려면 not을 사용해요. not은 연산자가 아니라 필터예요.

42 | if (. < 33 or . > 66 | not) then "medium"
     else "big or small"
     end

대체 연산자

대체 연산자를 사용하면 표현식이 false나 null일 때 쓸 "기본값"을 지정할 수 있어요.

A // B

# This is identical to
if A then A else B end

예시를 볼까요.

[3, 5, 18] | add / 2       # => 13
[]         | add / 2       # => error: null (null) and number (2) cannot be divided
[]         | add // 0 / 2  # => 0

더 있을까요?

다른 언어에서 넘어온 프로그래머라면 cond, case, switch, when, unless, 삼항 연산자 등 더 다양한 조건문을 기대할지도 몰라요. 위에 나온 연산자가 jq가 제공하는 전부예요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

조건문 배우기

연습이 잠겨 있어요

조건문 개념을 연습하려면 연습 문제 6개를 더 잠금 해제해요