Shell Makefile:捕获规则中的错误代码,忽略错误,根据错误代码做出决策

Shell Makefile:捕获规则中的错误代码,忽略错误,根据错误代码做出决策,shell,makefile,Shell,Makefile,所以,我现在有这个: TEST = "?" oktest: @-/bin/false && ([ $$? -eq 0 ] && echo "success!") || true; $(eval TEST = "all ok") @echo $(TEST) badtest: @-/bin/false && ([ $$? -eq 0 ] && echo "success!") || true; $(eval TE

所以,我现在有这个:

TEST = "?"
oktest:
    @-/bin/false && ([ $$? -eq 0 ] && echo "success!") || true; $(eval TEST = "all ok")
    @echo $(TEST)
badtest:
    @-/bin/false && ([ $$? -eq 0 ] && echo "success!") || true; $(eval TEST = "got error")
    @echo $(TEST)
    @T=echo;if [ $(TEST) = "got error" ]; then \
        echo "some error detected, cleanup env and fail test"; \
        /bin/false; \
    fi
all: oktest badtest 
如您所见,其依据是:

忽略错误代码-和| | true,两者都可以,但我更喜欢这种方式 使用shell代码进行运行时比较。 正在中止,shell命令返回false。
有没有一种方法可以使它更短,保存返回的错误代码,并在运行时将其与已知值进行比较,而不返回到嵌入的shell代码或外部脚本?

这两种$eval。。。调用是以shell返回代码为条件的。我不确定我是否完全理解您在这里尝试执行的操作。你有更现实的场景可以展示吗?