我发现我可以在makefile中使用ifneq并尝试比较0和命令stat的输出:
@for f in `find $(PATH_PAGES) -name *.hbs`; do \
ifneq "`stat -c '%Y' $$f`" "0";
//some code here
endif
done
但是在终端我遇到了错误:ifneq:command not found
有没有不同的方法来比较这个或者我做错了什么?
答案 0 :(得分:4)
在这种情况下你不想要使用Make的ifneq
,因为它在将命令交给shell之前进行了文本替换,但你有一个需要的shell循环根据shell命令的输出,在每次迭代中执行不同的操作。
改为使用shell if
:
if [ "`stat -c '%Y' $$f`" != "0" ]; then
//some code here
fi
答案 1 :(得分:2)
如果你想使用makefile的if条件,那么在if语句之前不应该有[TAB],因为如果你指定[TAB]那么它被视为shell命令,这就是为什么你得到ifneq:command not found
它的错误没有贝壳。
可能是这个Conditionals in Makefile: missing separator error? 可以帮助您更好地理解makefile
答案 2 :(得分:0)
我发现我需要在if
之前加上@
,并且反斜杠也被证明是必需的-
@if [ "`stat -c '%Y' $$f`" != "0" ]; then\
echo hello world;\
fi