在bash脚本中捕获JavaScript语法错误

时间:2017-09-04 10:31:44

标签: javascript bash shell pipe nashorn

我在Jenkins中有一个bash脚本,它使用Nashorn引擎来执行一些JavaScript。

Bash脚本:

#!/bin/bash

"$JAVA_HOME/bin/jjs" -scripting allKeys.js | sort > resultKeys

allKeys.js脚本从外部位置加载另一个脚本,然后输出一些值:

bundlesUrl="https://address.to/bundles.js";
load(bundlesUrl);

for (var bundle in bundles) {
    if (bundles.hasOwnProperty(bundle)) {
        for (var key in bundles[bundle]) {
            print(bundle + "\t" + key + "\t\t\"" + bundles[bundle][key] + "\"");
        }
    }
}

但是,bundlesUrl中指定的JavaScript文件有时可能包含不正确转义的特殊字符。这当然会产生语法错误。

jjs打印出语法错误,但bash脚本继续。

我想要做的是以某种方式捕获该语法错误并使用代码1退出bash脚本,以便Jenkins构建标记为失败。

实现这一目标有哪些好方法?

编辑:我发现我可以使用set -e

执行此操作

1 个答案:

答案 0 :(得分:0)

jjs在出错时以非零退出代码退出(另请参阅http://hg.openjdk.java.net/jdk9/dev/nashorn/file/17cc754c8936/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/Shell.java)。所以你应该能够检查$?在jjs命令之后的shell脚本中。