명령의 변수에 변수를 사용하는 Bash

명령의 변수에 변수를 사용하는 Bash

두 개의 컬 명령이 있습니다. 하나는 인증 키를 가져오고 다른 하나는 키를 사용해야 합니다. 현재 다음 bash 스크립트가 있습니다.

#!/bin/bash

ACCESS_TOKEN=$(curl -XPOST -H "Content-type: application/json" -d '{"client_id":"XXX", "client_secret":"XXX", "grant_type":"client_credentials"}' 'https://url.com' | ./jq '.access_token')

echo $ACCESS_TOKEN

UPLOADARRAY=$(curl -v -XGET -H 'Authorization: Bearer "$ACCESS_TOKEN"' -H 'client_id:XXX' -H "Content-type:application/json" 'https://otherurl.com' | ./jq '{authCode: .authCode, name: .uploadUrl}')

echo $UPLOADARRAY

문제는 두 번째 컬 명령의 자세한 출력을 보는 것입니다.

> User-Agent: curl/7.77.0
> Accept: */*
> Authorization: Bearer "$ACCESS_TOKEN"

따라서 콘텐츠의 내용에 액세스하기 위해 변수를 사용하는 대신(echo 문을 테스트하면 올바른 값이 포함되어 있음이 표시됨) "$ACCESS_TOKEN" 문자열이 사용됩니다.

나는 시청했다Bash에서 $(명령 대체) 내에서 인용추가 큰따옴표로 명령을 묶지만 아무런 차이가 없습니다.

여기서 무엇이 잘못되고 있는지 알아낼 수 있는 사람이 있나요?

답변1

이것이 핵심 부분입니다:

'Authorization: Bearer "$ACCESS_TOKEN"'

문제는 외부 작은따옴표가 변수 확장을 방지한다는 것입니다.

이를 통해 좋은 인용 관행을 유지하면서 성공적으로 확장할 수 있습니다.

"Authorization: Bearer \"$ACCESS_TOKEN\""

관련 정보