因此,我有以下代码:
.PHONY: test
test:
ifeq ($(grep -Fxq "substring" ./file && echo 1 || echo 0), 1)
//do something
else
//do other thing
endif如果我在一个文件中找到了一个子字符串,那么我的想法就是去做一些事情,但是我的条件从来不起作用。我可以独立地运行子subshell命令,当找到子字符串时,它可以正常工作,返回1。现在,我知道我可以简单地在make文件中放一个bash表达式,但是我想使用make文件本身的条件。
有什么可能会出错吗?
发布于 2022-05-09 23:32:41
在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、任何其他sh)来处理菜谱(或shell函数)。shell解释器是最原始的一个:sh。或者更具体地说,make读取自己的SHELL变量(通常是/bin/sh)。
https://unix.stackexchange.com/questions/701955
复制相似问题