sumarsono.com
Take it with a grain of salt


Cara include environment variable kedalam cURL

Posted on

Aku ingin script curl membaca environment variable untuk body datanya, eh error. Ternyata solusinya sangat mudah. Scriptku kira-kira begini:

API_KEY="mykey"
DOMAIN_NAME="mydomain.com"

SUBDOMAIN_NAME="$1"
IP_ADDRESS="192.168.1.1"

curl -X POST -H "Content-Type: application/json" \
             -H "X-Api-Key: $API_KEY" \
             -d '{"rrset_name": "$SUBDOMAIN_NAME",
                  "rrset_type": "A",
                  "rrset_ttl": 1800,
                  "rrset_values": ["$IP_ADDRESS"]}' \
             https://otherdomain.com/api/v99/domains/$DOMAIN_NAME/records

Ketika di eksekusi error, data rrset_name gak sesuai. Nah disini yang jadi masalah adalah ', apapun yg diapit oleh ' akan dieksekusi apa adanya. Contoh diatas adalah

-d '{"rrset_name": "$SUBDOMAIN_NAME",
                  "rrset_type": "A",
                  "rrset_ttl": 1800,
                  "rrset_values": ["$IP_ADDRESS"]}'

"$SUBDOMAIN_NAME" akan terkirim apa adanya $SUBDOMAIN_NAME bukan digantikan oleh $1.

Solusi dari masalah yang kuhadapi adalah sebagai berikut:

API_KEY="mykey"
DOMAIN_NAME="mydomain.com"

SUBDOMAIN_NAME="$1"
IP_ADDRESS="192.168.1.1"

curl -X POST -H "Content-Type: application/json" \
             -H "X-Api-Key: $API_KEY" \
             -d '{"rrset_name": "'"$SUBDOMAIN_NAME"'",
                  "rrset_type": "A",
                  "rrset_ttl": 1800,
                  "rrset_values": ["'"$IP_ADDRESS"'"]}' \
             https://otherdomain.com/api/v99/domains/$DOMAIN_NAME/records

"'"$SUBDOMAIN_NAME"'" dan "'"$IP_ADDRESS"'"

Cara ini mungkin kurang elegan, tapi it's just work.

Sumber solusi: superuser.com.