Uma variável é para dados, não para código. Defina uma função. Isso também simplifica sua cotação.
#!/bin/bash
userName="user"
passWord="password"
tenantName="tenant"
commande () {
curl -X POST \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Postman-Token: ..." \
-d@- \
http://controller:5000/v2.0/tokens <<EOF
{
"auth": {
"tenantName": "$tenantName",
"passwordCredentials": {
"username": "$userName",
"password": "$password"
}
}
}
EOF
}
O acima também lê o JSON de um documento aqui ( @-
lê o argumento para a opção -d
da entrada padrão) em vez de incorporá-lo em uma sequência para simplificar ainda mais as citações.
No entanto, também é uma má idéia codificar JSON manualmente dessa forma, se você não estiver garantindo que os valores de userName
, passWord
e tennatnName
sejam codificados corretamente em JSON. Uma solução melhor é usar algo como jq
para gerar JSON adequado para você.
commande () {
json_template='{
auth: {
tenantName: $tn,
passwordCredentials: {
username: $un,
password: $pw
}
}
}'
jq -n --arg un "$userName" \
--arg pw "$passWord" \
--arg tn "$tenantName" "$json_template" |
curl -X POST
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Postman-Token: ..." \
-d@- \
http://controller:5000/v2.0/tokens
}