매뉴얼에서:
jq는 JSON과 동일한 데이터 타입 집합을 지원해요. 숫자, 문자열, 불리언, 배열, 객체(JSON 용어로는 문자열 키만 가진 해시), 그리고 "null"이에요.
여기서는 숫자에 집중해 봐요.
모든 숫자는 정수이든 아니든 IEEE754 배정밀도 부동소수점 수예요. 그래서 정밀도가 53비트로 제한돼요.
숫자에는 일반적인 연산자들을 사용할 수 있어요:
산술: +, -, *, /, %
비교: ==, !=, <, <=, >=, >
표준 수학 함수
입력이 하나인 함수의 경우, 값을 함수로 파이프해요
$ jq -n '(1 | atan) * 4'
3.141592653589793
입력이 두 개인 함수의 경우, 함수는 입력을 무시하고 입력값을 매개변수로 받아요 (매개변수는 세미콜론으로 구분한다는 걸 기억해요)
$ jq -n 'pow(2; 10)'
1024
세미콜론이 함수 인자의 구분자이고, 쉼표가 아니에요.
jq 표현식연습 문제를 풀려면 조건 표현식에 대해 알아야 해요.
jq는 조건 표현식에 if-then-else 표현식을 사용해요.
표현식 이므로 파이프라인에 놓여요.
문법은 다음과 같아요: if CONDITION then TRUE_EXPR else FALSE_EXPR end.
else 절은 선택 사항이에요.
42 | if . < 33 then "small" else "larger" end
# => "larger"
조건을 더 추가하려면 elif를 사용해요
42 | if . < 33 then "small"
elif . < 67 then "medium"
else "large"
end
# => "medium"
이 연습 문제에서는 자동차 공장 조립 라인의 생산량을 분석하는 코드를 작성해요.
조립 라인의 속도는 0(꺼짐)부터 10(최대)까지 설정할 수 있어요.
가장 느린 속도인 1에서는 한 시간에 221대의 자동차가 생산돼요.
생산량은 속도에 따라 선형적으로 늘어나요.
따라서 속도를 4로 설정하면 시간당 4 * 221 = 884대의 자동차를 생산해야 해요.
하지만 속도가 높아질수록 결함이 있는 자동차가 만들어질 가능성도 커지고, 이런 자동차는 폐기해야 해요.
다음은 속도가 성공률에 어떤 영향을 미치는지 보여줘요:
1부터 4까지: 성공률 100%.5부터 8까지: 성공률 90%.9: 성공률 80%.10: 성공률 77%.두 가지 과제가 있어요.
조립 라인의 성공률을 고려해서 시간당 생산량을 계산해요.
1분에 완성되어 정상 작동하는 자동차가 몇 대 생산되는지 계산해요.