\
などのシンボルのエンコードされた値を返すため、文字を含むURL値を含むレスポンスJSONペイロードを返すcur呼び出しを作成するシェルスクリプトがあります=
。ところで応答のエコーが除去されています\
。その役割も得る方法はありますか?
シェルスクリプト:
curl -k -w "\n%{http_code}" -S -s -X GET \
-H "Accept: application/json" \
-u "<<Auth>>" \
"https://<<url>>" | {
read body
read code
if [ "x$code" = "x200" ]
then
echo "$body"
else
echo "ERROR:$code:$body"
fi
}
答えはこんな感じです。
{"param1":"val1","param2":{"p1":"v1","p2":"v2", "URL":"<<someString>>//<<host>>:<<port>>;extenstionu003dValue"}}
実際、URL値の最後の部分はですが、エンコードされたextension=value
値を返すときはを返す必要があります\u003d
。殻が切れています\
。誰かが\
返信にこの内容を含める方法を提案できますか?
答え1
問題は、シェルの組み込みread
機能がこれを\
エスケープ文字として扱うことです(ただし\u
特別な意味がないためリテラルになるu
)。
$ printf '%s\n' 'extension\u003dvalue' | { read body; echo "$body"; }
extensionu003dvalue
次のオプションを使用してバックスラッシュ処理をオフにできます-r
。
$ printf '%s\n' 'extension\u003dvalue' | { read -r body; echo "$body"; }
extension\u003dvalue