2013-07-10 28 views
8

Próbuję określić wartość zmiennej środowiskowej Jenkins (jak tworzone na Manage Jenkins -> ekran Konfiguracja systemu, pod nagłówkiem „Właściwości ogólne”) który zawiera spację. Chcę użyć tej zmiennej środowiskowej w kroku kompilacji Execute Shell. Opcja, że ​​muszę się w wierszu poleceń w etapie kompilacji:Jak określić wartość zmiennej środowiskowej Jenkins, która zawiera spację

--platform="Windows 7" 

Składnia używam na linii poleceń jest --platform=${VARIABLE_NAME}

Nie ważne jak próbuję go sformatować, Jenkins wydaje sformatować ją tak, aby była traktowana jako dwie wartości. Próbowałem:

  • Windows 7
  • "Windows 7"
  • 'Windows 7'
  • Windows \ 7

Odpowiednie wyniki, gdy wyjście podczas etapu Wykonaj Shell budowy zostały:

  • - platforma = Windows 7
  • '--platform = "Windows' '7" '
  • '--platform =' \ '' Windows' '7' \ '''
  • --platform = Windows/7

próbowałem również zmianę mojej linii składni poleceń --platform='${VARIABLE_NAME}' jak również '--platform=${VARIABLE_NAME}', ale w każdym z tych przypadków ${VARIABLE_NAME} nie zostanie rozwiązany w ogóle i po prostu pojawia się jako ${VARIABLE_NAME} na wynikającym z poleceniem.

Mam nadzieję, że istnieje sposób, aby to działało. Wszelkie sugestie są najbardziej cenione.

Odpowiedz

6

powinien być w stanie używać spacji bez znaków specjalnych w globalnej sekcji Właściwości.

Na przykład ustawić zmienną „THIS_VAL” mieć wartość „zawiera spacje”.

Moja próba budowania pracy był następujący:

#!/bin/bash 
set +v 
echo ${THIS_VAL} 
echo "${THIS_VAL}" 
echo $THIS_VAL 

a wyjście było

[workspace] $ /bin/bash /tmp/hudson8126983335734936805.sh 
HAS SPACES 
HAS SPACES 
HAS SPACES 
Finished: SUCCESS 

myślę, co trzeba zrobić, to użyć następujących:

--platform="${VARIABLE_NAME}" 

UWAGA: Za pomocą podwójne cytaty, nie pojedynczy q uotes. Posługiwanie się pojedynczymi cudzysłowami sprawia, że ​​rzeczy w cudzysłowach są dosłowne, co oznacza, że ​​wszelkie zmienne będą drukowane w niezmienionej postaci, a nie w rzeczywistej wartości. Dlatego "$ {VARIABLE_NAME}" zostanie wydrukowany w niezmienionej formie, a nie "Windows 7".


EDIT: podstawie @BobSilverberg komentarzu poniżej, należy użyć następujących:

--platform="$VARIABLE_NAME" 

Uwaga: nie klamrowych.

+1

Dziękuję Sagar. Spośród wszystkich kombinacji, które próbowałem, to nie był jeden z nich. W końcu działało, ale musiałem określić '--platform =" $ VARIABLE_NAME "'. Gdybym użył '--platform =" $ {VARIABLE_NAME} ", to wskoczyłoby tam kilka dodatkowych cytatów, więc wynikiem był' '--platform =' \ '' Windows 7 '\' '' '. – BobSilverberg

+0

Świetnie! Opublikuję korektę w odpowiedzi. Dzięki! – Sagar

Powiązane problemy