你如何在makefile中中止shell命令错误?

Adr*_*eil 2 php makefile

我正在尝试编写一个makefile来打包一些PHP脚本.我也想它来检查语法错误(使用内置的PHP皮棉工具)建立最终的zip文件之前,为了防止滑倒意外的错误.

到目前为止我有

all: dist
clean:
    rm -f output.zip
dist: clean
    for i in `find . -name "*.php"`; do php -l $$i; done
    zip -r output.zip src -x "*/.*" "*/tests*"
Run Code Online (Sandbox Code Playgroud)

这是有效的,但如果有PHP错误我希望它打破并且不继续构建zip文件(出于显而易见的原因).目前,他们可能只是在成功的lint运行和zip文件的输出页面中丢失.

我是以正确的方式来做这件事的吗?我应该使用make循环而不是shell循环吗?如何让make中止shell命令错误?

Mat*_*Mat 5

你可以这样做:

for i in `find . -name "*.php"`; do \
  php -l $$i; \
  if [ $$? -ne 0 ] ; then exit 42 ; fi \
done
Run Code Online (Sandbox Code Playgroud)