現在作業中の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}