我目前正在尝试创建一种简短且可移植的方法来检查我的工作 git 目录是否脏并相应地返回 T/F。我的最终目标是将其合并到 Makefile 中,并且我已这样实现它:
GIT_DIRTY := $(shell [[ -n $(git status -s) ]] && echo '\ dev')
我的问题是[[
操作符仅是 bash,并且作为要求,该 Makefile 需要能够sh
仅使用功能齐全的 shell 运行。我的预感是有一种方法可以使用[
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}