我試圖在 bash 中執行一個腳本,但是給我這個錯誤,
curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
curl: (3) unmatched close brace/bracket in URL position 24:
UTC","user_id":"01234"}}
我嘗試移除大括號但不起作用,這是行,
response=$(curl -X POST -H "Authorization: Bearer ${bearer_token}" -H "Content-Type: application/json" -d '{"cursus_user":{"begin_at":"'${start}'","cursus_id":"'${cursus_id}'","end_at":"'${end}'","user_id":"'${user}'"}}' "https://xxxxxx/xxxxxx.com")
有誰知道問題出在哪里?,我被卡住了,在此先感謝。
[ 更新 ]
真的我看不到錯誤:(
'
{
"cursus_user":
{
"begin_at": "'${start}'",
"cursus_id": "'${cursus_id}'",
"end_at": "'${end}'",
"user_id": "'${user}'"
}
}
'
uj5u.com熱心網友回復:
這實際上更像是一個格式化的評論。
兩個提示:
- 利用jq生成 JSON - 它會為您提供正確的所有參考
- 使用陣列提高可讀性(我不喜歡水平滾動)
data=$(
jq --null-input \
--compact-output \
--arg begin_at "$start" \
--arg cursus_id "$cursus_id" \
--arg end_at "$end" \
--arg user_id "$user" \
'{cursus_user: $ARGS.named}'
)
curl_opts=(
-X POST
-H "Authorization: Bearer ${bearer_token}"
-H "Content-Type: application/json"
-d "$data"
)
response=$(curl "${curl_opts[@]}" "https://xxxxxx/xxxxxx.com")
uj5u.com熱心網友回復:
Shellcheck標識命令中的幾個未加引號的變數curl。它甚至提供了更正后的代碼:
response=$(curl -X POST -H "Authorization: Bearer ${bearer_token}" -H "Content-Type: application/json" -d '{"cursus_user":{"begin_at":"'"${start}"'","cursus_id":"'"${cursus_id}"'","end_at":"'"${end}"'","user_id":"'"${user}"'"}}' "https://xxxxxx/xxxxxx.com")
在使用 shell 代碼時,使用Shellcheck通常可以節省大量時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/481566.html
