Shell

使用 shell 檢查嵌套在條件中的命令

  • November 30, 2021

我目前正在嘗試創建一種簡短且可移植的方法來檢查我的工作 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}

引用自:https://unix.stackexchange.com/questions/679562