我发现我可以在 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
有没有不同的方法来比较这个,或者我做错了什么?
我发现我可以在 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
有没有不同的方法来比较这个,或者我做错了什么?
在这种情况下,您不想使用 Make's ifneq
,因为它会在将命令交给 shell 之前进行文本替换,但是您有一个 shell 循环,需要根据 shell 命令的输出在每次迭代中做不同的事情。
改用外壳if
:
if [ "`stat -c '%Y' $$f`" != "0" ]; then
//some code here
fi
如果你想使用makefile的if条件,那么在if语句之前不应该有[TAB],因为如果你指定[TAB],那么它会被视为shell命令,这就是你得到错误的原因,ifneq:command not found
它不在shell中。
可能是Makefile中的条件:缺少分隔符错误? 可以帮助更好地理解 makefile
我发现我需要在前面加上if
一个@
,反斜杠也被证明是必要的——
@if [ "`stat -c '%Y' $$f`" != "0" ]; then\
echo hello world;\
fi