Bu curl komutuna bir değişkeni nasıl eklerim?


7

Sunucuya bir metin dizisi gönderen bir curl komutuna sahibim ve metin dizesinin bir dosyadan veya bir bash değişkeninden nasıl geleceğini anlamaya çalışıyorum. Komut şöyle gözüküyor:

curl -X POST -u "apikey:<apikey>"
--header "Content-Type: application/json"
--data '{"text": "<variable>"}'
"<url>"

Orada bir değişkeni nasıl elde edeceğimi bilemiyorum. $ Değişkeni ve $ (<dosya) ile değiştirmeyi denedim, ancak bunların bir eko olmadan tükürüklerini nasıl elde edeceğini bilmiyorum ve bir kıvrılmada yankı kuramıyorum.

Yanıtlar:


10

Tek tırnaklı dizgeyi durdurun, değişken genişlemesini izleyin, istenirse çift alıntı yapın ve tek tırnaklı dizgiyi devam ettirin:

--data '{"text": "'"$variable"'"}'

( $variablehala çevre ile birlikte yasal JSON oluşturan bir şeye genişletilmeli, yoksa diğer taraf muhtemelen çok mutlu olmayacaktır :).)


3
Bu teşekkürler! Ve
rüzgârda

5

Sadece buraya bir çözüm daha koymak için:

curl -X POST -u "apikey:${apikey}"
--header "Content-Type: application/json"
--data "{\"text\": \"${variable}\"}"
"${url}"

Temel olarak, "aşağıdaki dizgiyi birlikte ele almak, bir alıntı yapmaktan \"kaçınır ve ${varname}bir değişkendir.


4

Ben kullanma eğiliminde heredoc kıvrılma ile kullanım için JSON oluştururken:

curl -s -X POST $URL -d@- <<EOF
[
    {
        "id": 101,
        "text": "$variable"
    }
]
EOF
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.