Linux make file:如何使用错误消息提前退出循环

时间:2014-09-30 19:55:52

标签: linux for-loop gnu-make

我正在设置一个makefile来运行一个测试,该测试涉及将生成的文件列表与主目录中的对应项进行区分。我可以让循环工作并在diff失败时退出,但我还没想出如何包含失败消息并仍然立即退出for循环(和make过程)。

这是我所拥有的核心:

OUTFILE = $(patsubst $(MASTER_DIR1)/%,$(OUTDIR1)/%,$$file)

default: test

$(OUTDIR1):
    $(MKDIR) $(OUTDIR1)

test: $(OUTDIR)
    @for file in $(MASTER_LIST1); do \
        echo $$file; \
        diff $(IGNORE_OPT) \
        $$file \
        $(OUTFILE) \
        && exit 1; \
    done

退出失败但未通知用户原因。我尝试将&& exit 1;行更改为:

&& (echo "Diff failed"; exit 1; ); \

显示错误消息但不再退出。

如何添加错误消息并立即退出?

TIA!

1 个答案:

答案 0 :(得分:1)

根据Etan Reisner在对原始问题的评论中提供的帮助,这是有效的解决方案:

test: $(OUTDIR)
    @for file in $(MASTER_LIST1); do \
        echo $$file; \
        diff $(IGNORE_OPT) \
        $$file \
        $(OUTFILE) \
        && { echo "Diff failed"; exit 1; }; \
    done