我是shell脚本的新手。我想以特定的顺序从Shell脚本调用make文件列表。对于每个makefile,我想得到结果(make是成功还是失败)。如果有任何错误我想停止脚本执行。如果成功,我必须运行下一个makefile。
答案 0 :(得分:8)
一个常见的习惯用法是用set -e
创建一个shell脚本;这将导致脚本在第一个错误时退出。
#!/bin/sh
set -e
make -f Makefile1
make -f Makefile2
:
如果您需要对整个脚本进行更多控制,可以删除set -e
,然后明确退出make
失败:
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
答案 1 :(得分:2)
make -f makefile1
make -f makefile2
按顺序运行make文件
保存每个makefile的输出
make -f makefile1 >> output1
make -f makefile2 >> output2
检查每个make文件后的结果
make -f makefile1 >> output1
此行脚本后使用
回声$?这与if结合使用。如果回音$?结果为零然后你的成功所以如果echo $?结果为零然后运行下一个文件其他明智的退出