[make로 자동화하기] 명령어 실행 결과를 변수에 넣기

kameals·2020년 1월 22일
1

Infrastructure as Code

목록 보기
1/2
post-thumbnail

개요

make명령어와 Makefile은 환경구축 등 여러가지 작업을 자동화하기에 굉장히 편리한 툴입니다.

이번에 AWS fargate를 도입하면서,
현재 개발환경을 이미지로 빌드해서 ECR에 푸쉬하기 위한 절차를 Makefile로 설정하여 자동화시키려고 했습니다.

무엇을 하려고 했는가?

명령어 실행 결과를 변수에 넣고, 그 변수를 다음 명령어에 넘겨주는 작업

...
set-image-id:## 빌드된 image id를 취득
	IMAGE_ID=$(docker images | grep 이미지 | grep latest | awk '{ print $3; }')
...

그러나 취득에 실패

해결 방법

()안에는명령어앞에shell을입력해야했습니다.또한명령어내부에서사용되는변수는()안에는 명령어 앞에 `shell`을 입력해야 했습니다. 또한 명령어 내부에서 사용되는 변수는 `을 2번 써서 $$`로 표현해야 합니다.

...
set-image-id:## 빌드된 image id를 취득
	IMAGE_ID=$(shell docker images | grep 이미지 | grep latest | awk '{ print $$3; }')
...

결과 이후에 실행되는 docker tag 및 docker push 명령어가 잘 실행되었습니다.

이상입니다.

참고

  1. How to echo makefile variable through Make's $(shell …)
  2. Why You Need a Makefile in Your Project
profile
팀의 윤활유 역할이 되고 싶은 소박한 개발자입니다. 좌우명은 '밝고 바르고 튼튼하자'

0개의 댓글