Usando jq
:
USERINPUT=$'a e""R<*&\n\thello!\''
Esta string tem um par de aspas duplas, um caractere EOT, uma nova linha, uma tabulação e uma aspa simples, junto com algum texto comum.
data="$( jq --null-input --compact-output --arg str "$USERINPUT" '{"Attribute": $str}' )"
Isso cria um objeto JSON contendo os dados do usuário como o valor para o campo lone Attribute
.
A mesma coisa usando opções curtas:
data="$( jq -nc --arg str "$USERINPUT" '{"Attribute": $str}' )"
A partir disso, obtemos
{"Attribute":"ae\"\"R<*&\u0004\n\thello!'"}
como o valor em $data
.
Isso agora pode ser usado em sua chamada para curl
:
RESP="$( curl --connect-timeout "10" -s \
-H "Content-Type: application/json" \
-X POST -d "$data" \
"$ENDPOINT" | jq -r '.key' )"