0

我发现我可以在 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

有没有不同的方法来比较这个,或者我做错了什么?

4

3 回答 3

4

在这种情况下,您不想使用 Make's ifneq,因为它会在将命令交给 shell 之前进行文本替换,但是您有一个 shell 循环,需要根据 shell 命令的输出在每次迭代中做不同的事情。

改用外壳if

if [ "`stat -c '%Y' $$f`" != "0" ]; then
    //some code here
fi
于 2013-07-11T13:32:15.990 回答
3

如果你想使用makefile的if条件,那么在if语句之前不应该有[TAB],因为如果你指定[TAB],那么它会被视为shell命令,这就是你得到错误的原因,ifneq:command not found它不在shell中。

可能是Makefile中的条件:缺少分隔符错误? 可以帮助更好地理解 makefile

于 2013-07-12T04:32:14.090 回答
0

我发现我需要在前面加上if一个@,反斜杠也被证明是必要的——

@if [ "`stat -c '%Y' $$f`" != "0" ]; then\
    echo hello world;\
fi
于 2020-05-27T18:24:37.527 回答