들어가는 말
jenkins 등으로 CI를 구성했을 때 변수를 프로젝트 내부의 json 파일에서 변수를 읽어서 shell로 전달해야할 경우가 있다.
이럴 때 jq를 활용하여 처리하는 방법을 알아보도록 하자.
jq 설치
jq는 command line으로 JSON을 다룰 수 있도록 해준다.
jq is a lightweight and flexible command-line JSON processor. - jq 공식홈페이지 발췌
jq 공식 홈페이지에 접속해서 download 받아서 설치하면 된다.
linux 환경이라면 32bit나 64bit에 따라 아래 명령중 하나를 실행하여 직접 다운받을 수 있다.
$ wget http://stedolan.github.io/jq/download/linux32/jq
$ wget http://stedolan.github.io/jq/download/linux64/jq
jq 활용
example.json 예시
example.json 파일이 있다고 해보자.
jq로 json 파일의 특정 내용 조회
production
의 version
을 읽기 위해서는 다음과 같이 커맨드라인에서 입력하면 된다.
$ cat example.json | jq .production.version
cat
명령어는 텍스트로 된 파일의 내용을 확인할 때 사용한다.
|
(파이프)는 왼쪽 명령의 결과를 오른쪽에 전달한다.
위 명령을 해석하면 cat으로 excample.json 파일을 읽어서 jq에 전달한 것이다.
그리고 jq 뒤에 .production.version
는 필터에 해당한다.
.production
만 입력하면 production의 내용 전체를 보여준다. 그 뒤에 .version
을 입력하여 production 안의 version을 확인한 것이다.
출력 결과는 1
이다.
Shell에서 변수로 저장하기
생성된 결과를 Shell에 변수로 등록하는 것은 간단하다.
$ totuworld=$(cat example.json | jq .production.version)
변수명(여기서는 totuworld)을 입력하고 =
과 $()
로 명령을 감싸면 된다.
echo 명령어로 값을 확인할 수 있다.
$ echo $totuworld
맺음말
jq는 튜토리얼이나 메뉴얼도 잘 되어있고 온라인에서 테스트할 수 있는 페이지도 있으니 확인해보기 바란다.