2017-09-04 16 views
0

JavaScriptを少し実行するためにNashornエンジンを使用するJenkinsにbashスクリプトがあります。bashスクリプトで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

'jjs'は、未処理の/構文の例外でエラーコードを指定していませんか? – Caramiriel

+0

Jenkinsのコンソールログでは、 'jjs'のメッセージに構文エラーがあり、bashスクリプトが続行されているだけです。私がやりたいことはそこでスクリプトを終了することです。 –

答えて

0

JJSでこれを行うことができることが分かった(またhttp://hg.openjdk.java.net/jdk9/dev/nashorn/file/17cc754c8936/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/Shell.java参照)エラーならば非ゼロの終了コードで終了。だからあなたは$をチェックできるはずですか? jjsコマンドの直後のシェルスクリプトで。

+0

私は、ここでの問題は、そのコマンドに 'sort'を使っている可能性があるので、最後に実行されたコマンドは' jjs'ではないということです。 –

関連する問題