현재 작업 중인 git 디렉토리가 더러운지 확인하고 이에 따라 T/F를 반환하는 짧고 이식 가능한 방법을 만들려고 합니다. 내 궁극적인 목표는 이것을 Makefile에 통합하는 것이며 다음과 같이 달성했습니다.
GIT_DIRTY := $(shell [[ -n $(git status -s) ]] && echo '\ dev')
내 문제는 [[
연산자가 bash 전용이며 요구 사항에 따라 이 Makefile은 sh
완전한 기능을 갖춘 쉘만 사용하여 실행할 수 있어야 한다는 것입니다. 내 직감으로는 [
or 를 사용하여 이 작업을 수행할 수 있는 방법이 있을 것 같은데 test
, 방법을 잘 모르겠습니다.
감사해요!
답변1
GIT_DIRTY := $(shell [ -n "$(git status -s)" ] && echo '\ dev')
작동해야 하지만 명령이 작동하더라도 작동하지 않습니다 . 함수의 어떤 부분이 명령을 좋아하지 않는 sh
것 같습니다 .shell
make
shell
해결 방법은 다음과 같습니다. 더 간단한 명령을 사용하여 조건부 함수 자체를 제공 하고 사용하여 make
나머지 작업을 수행합니다.
GIT_STATUS := $(shell git status -s)
GIT_DIRTY := $(if ${GIT_STATUS},DIRTY,CLEAN)
all:
@echo ${GIT_DIRTY}