2017-09-04 2 views
0

J'ai un script bash dans Jenkins qui utilise le moteur Nashorn pour effectuer un peu de JavaScript.Catch une erreur de syntaxe JavaScript dans un script bash

script Bash:

#!/bin/bash 

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

Le script allKeys.js charge un autre script de l'emplacement externe, puis imprime des valeurs:

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] + "\""); 
     } 
    } 
} 

Cependant, le fichier JavaScript spécifié dans bundlesUrl peut parfois contenir de manière incorrecte caractères spéciaux échappés. Cela produit bien sûr une erreur de syntaxe.

Le jjs imprime qu'il y avait une erreur de syntaxe, mais le script bash continue. Ce que je voudrais faire est en quelque sorte attraper cette erreur de syntaxe et quitter le script bash avec le code 1 de sorte que Jenkins construit des marques comme ayant échoué.

Quels sont les bons moyens d'y parvenir?

EDIT: Je trouve que je peux le faire avec un set -e

+0

JJs ne spécifie-t-il pas un code d'erreur sur une exception non gérée/de syntaxe? – Caramiriel

+0

Dans le journal de la console Jenkins, je ne vois qu'un message de 'jjs' indiquant une erreur de syntaxe, puis le script bash continue. Ce que je veux faire est de quitter le script ici et ensuite. –

Répondre