我是shell脚本的新手。 我想以特定的顺序从Shell脚本中调用make文件的列表。 对于每个makefile我想得到结果(make是成功还是失败)。 如果有任何错误,我想停止脚本执行。 如果成功,我必须运行下一个生成文件。
一个常见的习惯用法是用set -e创建一个shell脚本; 这将导致脚本退出第一个错误。
#!/bin/sh set -e make -f Makefile1 make -f Makefile2 :
如果您需要对整个脚本进行更多的控制,可以删除set -e ,而是在失败时显式地退出:
make -f Makefile1 || exit make -f Makefile2 || exit
为了减少代码重复,创建一个循环:
for f in Makefile1 Makefile2; do make -f "$f" || exit done
只是要明确, || “或”和&& “和”连接词是速记
if make -f Makefile1; then : "and" part else : "or" part fi
最后,你描述的行为听起来完全像Make本身的行为。 也许顶级的Makefile实际上是一个适合你的场景的解决方案?
.PHONY: all all: $(MAKE) -f Makefile1 $(MAKE) -f Makefile2
make -f makefile1 make -f makefile2
按顺序运行make文件
保存每个makefile的输出
make -f makefile1 >> output1 make -f makefile2 >> output2
在每个make文件之后检查结果
make -f makefile1 >> output1
在这行脚本之后使用
echo $? 这与if结合。 如果echo $? 结果零然后你的成功,所以如果echo $? 结果零然后运行下一个文件其他明智的出口