2017-12-21 3 views
0

를 전송하지 I가 다음과 같은 작은 bash는 스크립트 :이 경우배쉬 컬 요청이 완료 매개 변수

TEST=$(curl -X POST -s -H "Content-type: application/json" -X POST http://$SITE/REST/v1/ -d ' 
{ 
    "Authorization":"Bearer '$TOKEN'" 
} 
' --trace-ascii /dev/stdout) 

, $ 토큰 = c4cc0c81e279defd4bd261e9e1550e8a1ded5JKg5

그러나

, 나는 --trace-ASCII로 요청을 보낼 때 사용 설정하면 출력에서 ​​다음을 볼 수 있습니다.

{. "Authorization":"Bearer "c4cc0c81e279defd4bd261e9 0040: e1550e8a1ded5JKg5"". } 

왜 이렇게 분할되는 이유는 무엇입니까? 이 문제를 어떻게 방지 할 수 있습니까?

+0

변수 'TOKEN'이 이미 잘린 값으로 설정되어 있습니까? – Alfe

+0

Bearer c4cc0c81e279defd4bd261e9e1550e8a1ded5JKg5를 일반 텍스트로 사용할 때 동일한 문제가 발생합니다. 그것도 상처를 입는다 – SnIpY

+0

나는이 문제가 '$ TOKEN'에 있다고 생각한다.이 방법은 작은 따옴표가 아닌 유일한 단어이다. $ TOKEN –

답변

1

나는 인용에 도움이되는이를 할 것이다 :

data=$(printf '{"Authorization":"Bearer %s"}' "$TOKEN") 
output=$(curl -s -H "Content-type: application/json" -X POST http://$SITE/REST/v1/ -d "$data" --trace-ascii /dev/stdout) 

난 당신이 헤더로되지 않은 데이터로 인증을 전송해야 할 수 있습니다 생각한다. 당신이 ALL_CAPS_VARNAMES를 사용하는 습관을 나가야

curl_opts=(
    --silent 
    --header "Content-type: application/json" 
    --header "Authorization: Bearer $token" 
    --trace-ascii - 
) 
curl "${curl_opts[@]}" -X POST -d "$other_data" "$url" 

참고 꽤 읽을 수있어,이 시도 : 쉘 예약으로 사람들을 둡니다.

+0

감사합니다! 두 개의 키 - 값을 전달해야한다면 데이터 printf 부분이 어떻게 보이나요? – SnIpY

+0

bash 프롬프트에서'help printf'를 입력하십시오. –