シェルを使用して条件でネストされたコマンドを確認する

シェルを使用して条件でネストされたコマンドを確認する

現在作業中の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ようです。shellmake

shell回避策は次のとおりです。より簡単なコマンドを使用して条件付き関数自体を提供し、使用して残りのmakeタスクを実行します。

GIT_STATUS := $(shell git status -s)

GIT_DIRTY := $(if ${GIT_STATUS},DIRTY,CLEAN)

all:
    @echo ${GIT_DIRTY}

関連情報