我发现在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的 ifneq
因为它在把命令交给shell之前会进行文本替换,但你有一个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
它的外壳不存在。
可能是这个 Makefile中的条件:缺少分隔符错误?可以帮助更好地理解makefile。
我发现,我需要在前面的 if
附带 @
事实证明,反斜杠也是必要的------。
@if [ "`stat -c '%Y' $$f`" != "0" ]; then\
echo hello world;\
fi