2013-07-10 17 views
8

Jenkins環境変数の値を指定しようとしています(「Jenkinsの管理 - >システムの構成」画面の見出し「グローバルプロパティ」の下に作成されます)。スペースを含んでいます。私はExecute Shellビルドステップでこの環境変数を使いたいと思う。私はビルドステップでコマンドラインに表示される必要があるオプションは:私は、コマンドラインで使用している構文が、私はそれをフォーマットしようとどんなに--platform=${VARIABLE_NAME}スペースを含むJenkins環境変数の値を指定する方法

ある

--platform="Windows 7" 

、ジェンキンスは思えますそれを2つの値として扱うように再フォーマットします。私が試してみました:

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

シェルが構築実行ステップの間に対応する結果、出力をされている:

  • - プラットフォームWindows 7
  • '--platform = "Windowsの '7" '
  • '--platform =' \ '' Windowsの '7' \ '''
  • --platform =のWindows/7

また、--platform='${VARIABLE_NAME}'と同様に'--platform=${VARIABLE_NAME}'にコマンドラインの構文を変更しようとしましたが、それぞれのケースで${VARIABLE_NAME}が解決されず、結果のコマンドには${VARIABLE_NAME}と表示されます。

私はこの作業を行う方法があると願っています。どのような提案が最も高く評価されます。

答えて

6

グローバルプロパティセクションで特殊文字を使用せずにスペースを使用できるようにする必要があります。

たとえば、変数「THIS_VAL」の値を「HAS SPACES」に設定します。

私のテストビルドジョブが従っていました:

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

と出力が

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

だった私は、あなたが何をする必要があるかと思います次を使用している:

--platform="${VARIABLE_NAME}" 

注:二重の引用符を使用してください。 uotes。一重引用符を使用すると、引用符内の要素がリテラルになります。つまり、実際の値に解析されずにそのまま変数が出力されます。したがって、 '$ {VARIABLE_NAME}'はそのままで、 "Windows 7"では解析されません。


EDIT:以下@BobSilverbergコメントに基づいて 、以下を使用します。

--platform="$VARIABLE_NAME" 

注:なし中括弧を。

+1

ありがとうSagar。私が試したすべての組み合わせのうち、それはそれらの一つではありませんでした。それは動作しましたが、 '--platform =" $ VARIABLE_NAME "'を指定しなければなりませんでした。 '--platform =" $ {VARIABLE_NAME} "を使用した場合、余分な引用符があるので、結果は' '--platform =' \ '' Windows 7 '\' '''となります。 – BobSilverberg

+0

素晴らしい!私は答えに訂正を掲載します。ありがとう! – Sagar

関連する問題