본문 바로가기
Programming Skills/Makefile

[Makefile] if문 사용하기

by jungcow 2021. 5. 29.

Makefile diagram

makefile diagram

  • 위 그림에서 Stuff to execute에 해당하는 부분은 shell 명령어를 작성하는 곳이라서 shell if문 문법을 알면 사용할 수 있다.

쉘 if문 사용하기

shell 에서 if문을 사용하는 방법은 다음과 같다

#! /bin/bash

if [ 값1 조건문 값2 ]; then
    수행문
fi
  • 띄어쓰기도 위와 같이 모두 맞춰주지 않는다면 스크립트 에러가 난다.
  • 쉘 명령어 [ : test 유틸리티이다.

man test

  • test expression ➡ [ expression ]
  • expression이 참인지 아닌지 평가한다.
  • 참이면 exit status는 0, 거짓이면 exit status는 1이 된다.
  • 여기 에서 참고.

쉘의 if 조건문 종류

[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참

# [ 숫자 조건 숫자 ]
[ -eq ] : 값이 같으면 참 
[ -ne ] : 값이 다르면 참
[ -gt ] :  값1 > 값2
[ -ge ] : 값1  >= 값2
[ -lt ] : 값1 < 값2
[ -le ] : 값1 <= 값2

[ -a ] : &&연산과 동일
[ -o ] : ||연산과 동일

[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참

[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

출처: https://jink1982.tistory.com/48 [돼민이]

예제

if [ -d file1 -a -d file2 ]; then
    echo "hello";
fi

file1 디렉토리와 file2 디렉토리가 모두 있을 때만 Hello 를 출력해라

Makefile에 적용하기

한가지 주의해야 할 점은 Makefile 내에서 줄바꿈이 있을 경우 모두 \ (역슬래쉬) 로 줄바꿈 처리를 해줘야 한다.

$(NAME)    :    $(OBJS)
    @if [ ! -d pipe ]; then \
        mkdir pipe; \
    fi
    $(CC) $(CFLAGS) $(OBJS) $(LIB) -o $(NAME)

@ 표시는 Makefile의 echoing 기능을 끄는 역할을 한다. 이 기능 관련해서는 여기 에서 더 볼 수 있다.

'Programming Skills > Makefile' 카테고리의 다른 글

[Makefile] 출력 숨기기  (0) 2021.05.29