在makefile中for循环的条件下执行两个命令

时间:2019-01-10 16:06:13

标签: bash makefile

我的MakeFile中的代码:

for i in $(SUBDIRS); do \
($(MAKE) -C $$i) || (exit $$? && rm -rf bin);  \
done

如果子品牌出现错误,我需要删除bin目录。如何一起执行它,即如何同时启动exit $$?rm -rf bin?现在仅执行exit $$?

1 个答案:

答案 0 :(得分:1)

  1. 在调用rm或退出之前保存返回码。
  2. ()内正在运行的退出将不会退出,因为它正在子外壳中运行。使用{}。请参阅https://www.gnu.org/software/bash/manual/html_node/Command-Grouping.html(此页面适用于bash,但是sh与此方式相同。)

示例:

SUBDIRS := $(wildcard */.)

all:
    @for i in $(SUBDIRS); do \
        $(MAKE) -C $$i || { RETVAL=$$?; rm -rf bin; exit $$RETVAL; }; \
    done