我在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
答案 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脚本中。