如果在Unix shell中命令失败,如何中止?

时间:2015-05-27 09:37:15

标签: linux bash shell unix gulp

我对shell脚本不是很了解,但仍无法找到解决方案。我想运行命令gulp tslint,如果它返回错误,则中止脚本。

到目前为止,我尝试gulp tslint || exit 1但没有成功。我认为它以某种方式返回true,即使它在命令提示符下运行时有错误,例如

[12:30:14] Starting 'tslint'...
[12:30:14] Finished 'tslint' after 9.49 ms
[12:30:16] [gulp-tslint] error (quotemark) payment-types.ts[18, 53]: " should be '

我怎样才能让它发挥作用?

任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:3)

这看起来像一个大口问题,而不是一个shell问题。当gulp成功完成(即到达出口但没有引发错误)时,它并没有告诉shell出现任何问题。解决这个问题的最佳方法是重新配置gulp以将lint故障解释为错误。

您可以发布gulpfile.js吗?特别是您的tslint任务。

可能看起来像

gulp.task('tslint', function() {
    gulp.src("**/*.ts")
        .pipe(tslint.report('prose'))
});

您可以通过将此更改为:

来指示您的记者失败
gulp.task('tslint', function() {
    gulp.src("**/*.ts")
        .pipe(tslint.report('prose', {emitError: true}))
});

编辑:查看gulp-tslint README以获取有关emitError的更多详细信息