2017-05-16 8 views
0

curlコマンドを使用してパラメータを持つJenkinsジョブを作成するシェルスクリプトを作成しました。以下はコードです。CURLパラメータを変数として使用してポストする

#!/bin/bash 
val3=($(cut -d ',' -f3 csvfile.csv)) 
printf "%s\n" "${val3[0]}" 
echo $val3 

curl -X POST https://my-jenkins.abc.com/inst/job/Aut/job/pipe-workflow/job/Job3/build \ 
--user user:token \ 
    --data-urlencode json='{"parameter": [{"name":"valA", "value":"${val3}"}]}' 

私は 'csvfile.csv'というファイルを読み込み、curlコマンドで$ val3の値を渡しています。 $ val3の出力は 'John'です。私はカールの中で$ val3の値を代用することができません。それは文学を取っている。私も次のように試みたが、どれも助けなかった。

--data-urlencode json='{"parameter": [{"name":"valA", "value":"$val3"}]}' 

--data-urlencode json='{"parameter": [{"name":"valA", "value":"${val3[0]}"}]}' 

--data-urlencode json='{"parameter": [{"name":"valA", "value":"val3"}]}' 

--data-urlencode json='{"parameter": [{"name":"valA", "value":"${val3}"}]}' 

--data-urlencode json="{"parameter": [{"name":"valA", "value":"${val3}"}]}" 

上記のいずれも機能していません。最後の1つはエラーを投げている。私はジェンキンスジョブで見ると、パラメータの値は以下の通りです:

$ val3は、val3は、$ {} val3は

それが値を代入以上であるとしてそれはそれを取っています。

printf "%s\n" "${val3[0]}" 
echo $val3 

上記の2行は、私がジョンとして出力しているが、カールを入れている間は機能していません。これを引き起こしていると私はそれを修正する方法はありますか?あなたのその後

val3=$(cut -d ',' -f3 csvfile.csv) 

val3=($(cut -d ',' -f3 csvfile.csv)) 

あなたはおそらくこれをしたいので、これは、配列を作成します。

は、私が見ることができるいくつかの問題がある。ここ事前

+0

http://stackoverflow.com/q/6697753/2088135 –

+0

感謝トム。私は一重引用符と二重引用符の両方を試してみましたが、うまくいきませんでした。 – Raji

+1

外部で二重引用符を使用し、文字列の中で二重引用符をエスケープする必要があります。変数に二重引用符が含まれていないと仮定します。 –

答えて

1

にありがとう変数は次のように挿入する必要があります。

--data-urlencode json="{\"parameter\": [{\"name\": \"valA\", \"value\":\"$val3\"}]}" 

また、あなたのJSONを生成するためにJQのようなツールを使用して検討する必要があります。

json="$(jq -nc --arg v "$var3" '{ parameter: [{ name: "valA", value: $v }] }')" 
+0

ありがとうございました!これは、あなたが言ったように代入文を変更してスラッシュを入れた後に働いています。どうもありがとう – Raji

関連する問題