it-swarm.com.de

grooviges Skript - sh mit Variable

Etwas offensichtlich vermisst. Wie übergebe ich eine Variable aus einem groovigen Skript an einen Shell-Befehl? Dies ist im Zusammenhang mit einer Jenkins-Datei, wenn es auf die Syntax ankommt. 

def COLOR

node('nodename'){

    stage ('color') {

        COLOR = "green"
        echo "color is $COLOR"

        sh '''COLOR=${COLOR}
        echo $COLOR'''

    }
}

Ich erwarte den Shell-Bit-Druck green, aber ich erhalte Folgendes:

[Pipeline] echo
color is green
[Pipeline] sh
[job] Running Shell script
+ COLOR=
+ echo

Ich muss dreifache Anführungszeichen für die Variable sh verwenden, da der Inhalt da drin ist, wenn ich das klargestellt habe.

6
Alex

Sie müssen Anführungszeichen anstelle von einfachen Anführungszeichen verwenden, um Ausdrücke in der Zeichenfolge zu ersetzen:

def COLOR

node('nodename'){

    stage ('color') {

        COLOR = "green"
        echo "color is $COLOR"

        sh """COLOR=${COLOR}
        echo $COLOR"""

    }
}

Wenn aus irgendeinem Grund einfache Anführungszeichen verwendet werden müssen, versuchen Sie die Verkettung mithilfe von +:

sh '''COLOR=''' + COLOR + '''
    echo ''' + COLOR
13
manouti

Wenn der Code hier der groovigen Variablenwert ("grün") der Umgebungsvariable COLOR zugeordnet ist und echo $COLOR die Shell-Variable ausdrucken soll, muss der $ mit einem Escape-Zeichen versehen werden, damit die Shell sie lesen kann diese:

sh """COLOR=${COLOR}
echo \$COLOR"""
1
Amy B Higgins

FARBE = "grün"

sh label: '', script: "echo $ COLOR"

0
Raj Polakala