Shell
Makefile 子shell if 條件
所以我有以下程式碼:
.PHONY: test test: ifeq ($(grep -Fxq "substring" ./file && echo 1 || echo 0), 1) //do something else //do other thing endif
如果我在文件中找到一個子字元串,這個想法只是做一些事情,但是我的條件永遠不會起作用。我可以獨立執行 subshell 命令,當找到子字元串時,它會按預期返回 1。現在我知道我可以簡單地在 make 文件中放置一個 bash if 表達式,但我想使用 make 文件自己的條件。
有什麼想法可能會出錯嗎?
中沒有
grep
功能make
。但是您可以使用函式呼叫外部二進製文件shell
:.PHONY: test test: ifeq ($(shell grep -Fxq "substring" ./file.txt && echo 1 || echo 0), 1) echo Yes else echo No endif
您應該記住的另一件事 -
make
不使用 bash(或 ksh、zsh、any-other-sh)來處理配方(或shell
函式)。shell 解釋器是最原始的解釋器:sh
. 或者更具體地說,make
讀取它自己的 SHELL 變數(通常是 /bin/sh)。