Ich habe ein Shell-Skript geschrieben, das mit dem Befehl curl einen Jenkins-Job mit Parametern erstellt. Folgendes ist der Code.CURL Post mit Variable als Parameter funktioniert nicht
#!/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}"}]}'
Ich lese eine Datei als ‚csvfile.csv‘ genannt und das Bestehen der Wert von $ val3 im curl Befehl. Die Ausgabe von $ val3 ist 'John'. Ich bin nicht in der Lage, den Wert von $ val3 in der Locke zu ersetzen. Es nimmt es literarisch. Ich habe auch versucht zu folgen, aber keiner von ihnen hat geholfen.
--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}"}]}"
Keine der oben genannten funktioniert. Der letzte ist Fehler werfen. Als ich in Jenkins Job zu sehen, ist der Wert des Parameters, wie folgend:
$ val3, val3, $ {val3}
Es nimmt es, wie es den Wert als Substitution ist.
printf "%s\n" "${val3[0]}"
echo $val3
Die obigen zwei Zeilen geben mir Ausgabe als John, aber während es in curl, es funktioniert nicht. Was verursacht das und wie behebe ich es?
Vielen Dank im Voraus
http://stackoverflow.com/q/6697753/2088135 –
Dank Tom. Ich habe sowohl einzelne als auch doppelte Anführungszeichen ausprobiert und es hat nicht funktioniert – Raji
Sie müssen doppelte Anführungszeichen auf der Außenseite verwenden und dann die doppelten Anführungszeichen innerhalb der Zeichenkette flüchten. Ich nehme an, dass die Variablen selbst keine Anführungszeichen enthalten. –