Chcę użyć zmiennej, której używam wewnątrz mojego skryptu Jenkinsfile
, a następnie przekazać jej wartość do wykonania skryptu powłoki (jako zmiennej środowiskowej lub parametru wiersza poleceń).Jak przekazać zmienne z Jenkinsfile do polecenia powłoki
Ale po Jenkinsfile
:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh 'echo "from shell i=$i"'
}
Daje wyjście:
a
from shell i=
b
from shell i=
c
from shell i=
Pożądany wyjście jest coś takiego:
a
from shell i=a
b
from shell i=b
c
from shell i=c
jakiś pomysł, jak przekazać wartość i
do the shell scipt?
Edit: oparciu Matt's odpowiedź, teraz korzystać z tego rozwiązania:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "i=${i}; " + 'echo "from shell i=$i"'
}
Zaletą jest to, że nie trzeba uciec "
w skrypcie powłoki.
nie mogę sprawdzić, ale również starają się otoczyć var jak to $ {i} – chenchuk
Obie nie będą działać. Sprawdzanie składni groovy, różnica między '' 'i' '' 'jest po prostu ciągiem pojedynczej linii w stosunku do ciągu wielowierszowego. – Joe
Wierzę, że "sh" "" zadziała, tj. Potrójne podwójne cudzysłowy zamiast potrójnych pojedynczych cudzysłowów –