2013-07-10 14 views
8

Sto tentando di specificare un valore per una variabile di ambiente Jenkins (come creato nella schermata Gestisci Jenkins -> Configura sistema, sotto l'intestazione "Proprietà globali") che contiene uno spazio. Voglio utilizzare questa variabile di ambiente in un passo di generazione di Execute Shell. L'opzione che ho bisogno di apparire nella riga di comando nel passaggio di generazione è:Come specificare un valore per una variabile di ambiente Jenkins che contiene uno spazio

--platform="Windows 7" 

La sintassi che sto usando sulla riga di comando è --platform=${VARIABLE_NAME}

Non importa come tento di formattarlo, Jenkins sembra riformattarlo in modo che venga considerato come due valori. Ho provato:

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

I corrispondenti risultati, quando l'uscita durante la fase di eseguire la shell costruire è stato:

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

Ho anche provato a modificare la sintassi della mia riga di comando su --platform='${VARIABLE_NAME}' e '--platform=${VARIABLE_NAME}', ma in ciascuno di questi casi lo ${VARIABLE_NAME} non è stato risolto affatto e appare come ${VARIABLE_NAME} sul comando risultante.

Spero che ci sia un modo per farlo funzionare. Ogni suggerimento è più apprezzato.

risposta

6

Dovresti essere in grado di utilizzare spazi senza caratteri speciali nella sezione delle proprietà globali.

Ad esempio, ho impostato una variabile "THIS_VAL" per avere il valore "HAS SPACES".

Il mio lavoro di test di compilazione è stato il seguente:

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

e l'uscita è stata

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

Penso che quello che dovete fare è utilizzare il seguente:

--platform="${VARIABLE_NAME}" 

NOTA: Utilizza doppie virgolette, non singole q uoti. L'uso di virgolette singole rende le cose all'interno delle virgolette letterali, nel senso che qualsiasi variabile verrà stampata così com'è, non analizzata nel valore effettivo. Pertanto '$ {VARIABLE_NAME}' verrà stampato così com'è, non analizzato in "Windows 7".


EDIT: Sulla base @BobSilverberg commento qui sotto, utilizzare il seguente:

--platform="$VARIABLE_NAME" 

Nota: nessun parentesi graffe.

+1

Grazie Sagar. Tra tutte le combinazioni che ho provato, non era uno di loro. Alla fine ha funzionato, ma ho dovuto specificare '--platform =" $ VARIABLE_NAME "'. Se ho usato '--platform =" $ {VARIABLE_NAME} "' ha inserito alcune virgolette in più, quindi il risultato era ''--platform =' \ '' Windows 7 '\' '''. – BobSilverberg

+0

Ottimo! Inserirò la correzione nella risposta. Grazie! – Sagar

Problemi correlati