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

Linux 如果Unix shell中的命令失败,如何中止?,linux,bash,shell,unix,gulp,Linux,Bash,Shell,Unix,Gulp,我对shell脚本不是很在行,仍然找不到解决这个问题的方法。我想运行一个命令gulp tslint,如果返回错误,则中止脚本 到目前为止,我试图吞下tslint | |出口1,但没有成功。我认为它在某种程度上返回了true,即使在命令提示符下运行它时有错误 [12:30:14] Starting 'tslint'... [12:30:14] Finished 'tslint' after 9.49 ms [12:30:16] [gulp-tslint] error (quotemark) pay

我对shell脚本不是很在行,仍然找不到解决这个问题的方法。我想运行一个命令
gulp tslint
,如果返回错误,则中止脚本

到目前为止,我试图吞下tslint | |出口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 '
我怎样才能让它工作


谢谢你的帮助。谢谢

这看起来像是一个吞咽问题,而不是空壳问题。当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了解有关emitError的更多详细信息

当发生错误时,由于gulps返回0的可能重复,因此没有意义分析返回的代码,但您仍然可以手动解析命令输出,如果发现错误,请转到退出