Shell
使用 shell 檢查嵌套在條件中的命令
我目前正在嘗試創建一種簡短且可移植的方法來檢查我的工作 git 目錄是否臟並相應地返回 T/F。我的最終目標是將其合併到 Makefile 中,並且我已將其實現為:
GIT_DIRTY := $(shell [[ -n $(git status -s) ]] && echo '\ dev')
我的問題是
[[
操作員只是 bash,作為一個要求,這個 Makefile 需要能夠sh
僅使用功能齊全的 shell 執行。我的預感是有一種方法可以使用[
or來完成此任務test
,但我不確定如何。謝謝!
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}