groovy script sh avec variable
Manque quelque chose d'évident. Comment puis-je passer une variable à partir d'un script groovy dans une commande shell? C'est dans le contexte d'une Jenkinsfile si c'est important pour la syntaxe.
def COLOR
node('nodename'){
stage ('color') {
COLOR = "green"
echo "color is $COLOR"
sh '''COLOR=${COLOR}
echo $COLOR'''
}
}
J'attends de voir la coquille peu l'impression green
, mais je le suit;
[Pipeline] echo
color is green
[Pipeline] sh
[job] Running shell script
+ COLOR=
+ echo
- Je utiliser le triple de citer sur le sh
à cause du contenu qui va aller là-bas une fois que je reçois cette redressé.
OriginalL'auteur Alex | 2017-04-12
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser des guillemets au lieu d'une seule, afin de remplacer les expressions de la chaîne:
Si les guillemets simples doivent être utilisés pour une raison quelconque, essayez de la concaténation de l'aide
+
:Avec multi-chaînes (à l'aide de triple cotation), je doute que vous pouvez contourner beaucoup. Mais je n'ai pas de comprendre exactement ce que vous entendez par "essayer de s'adapter à jq/json à l'intérieur d'une variable". Les ouvrages suivants, en Groovy:
def s = """root { key : "val" }"""
il s'agit d'un suivi de cette question stackoverflow.com/questions/43373176/... en essayant de incorporent que la solution dans le groovy/shell combinaison. Probablement en dehors de la portée de cette question à résoudre
Une concaténation de chaîne peut être utilisé avec des guillemets simples (voir la mise à jour de la réponse).
vous êtes un faiseur de miracles, je vous remercie beaucoup!
OriginalL'auteur manouti
Si le code ici est destiné à attribuer le groovy de la valeur de la variable ("vert") à la variable d'environnement de la COULEUR, et
echo $COLOR
est destinée à imprimer la variable shell, le$
doit être échappé souhaitez afin que la coque puisse le lire, comme ceci:OriginalL'auteur Amy B Higgins