컬용 bash 스크립트에서 변수 사용

컬용 bash 스크립트에서 변수 사용

다음 스크립트에서 명령의 실제 값을 사용하면 curl작동하고 결과를 반환하지만 변수를 사용하면 작동하지 않습니다.

명령에서 정의하는 방법에 문제가 있는 것 같습니다.

amz_t=$(cat amazon-token.txt )
flx_id=$(cat flex-id.txt )
ses_t=$(cat session-token.txt )

curl -s -H 'Host: flex-capacity-na.amazon.com' \
  -H 'Cookie: session-token='$ses_t'' \
  -H 'x-amz-access-token: '$amz_t'' \
  -H 'x-flex-instance-id: '$flx_id'' \
  -H 'Accept: */*' \
  -H 'User-Agent: iOS/10.2.2 (iPhone Darwin) Model/iPhone Platform/iPhone6,1 RabbitiOS/2.0.141' \
  -H 'Accept-Language: en-us' \
  --compressed 'https://flex-capacity-na.amazon.com/GetOffersForProvider?serviceAreaIds=122' >> output.txt

위에서 언급한 txt 파일에서 특정 값만 포함하고 정크 값은 포함하지 않고 실행하려는 명령은 다음과 같습니다.

답변1

다음과 같이 시도해 보세요.

amz_t=$(cat amazon-token.txt)
flx_id=$(cat flex-id.txt)
ses_t=$(cat session-token.txt)

UA='iOS/10.2.2 (iPhone Darwin) Model/iPhone Platform/iPhone6,1 RabbitiOS/2.0.141'

URL='https://flex-capacity-na.amazon.com/GetOffersForProvider?serviceAreaIds=122'

curl -s -H 'Host: flex-capacity-na.amazon.com' \
  -H "Cookie: session-token=$ses_t" \
  -H "x-amz-access-token: $amz_t" \
  -H "x-flex-instance-id: $flx_id" \
  -H 'Accept: */*' \
  -H "User-Agent: $UA" \
  -H 'Accept-Language: en-us' \
  --compressed "$URL" >> output.txt

고정 문자열(즉, 변수가 없는 경우)에는 작은따옴표를 사용하고 변수 보간이 필요한 문자열에는 큰따옴표를 사용하세요.

답변2

변수에는 작은따옴표를 사용할 수 없습니다. 이로 인해 bash가 $특수 문자를 해석하지 못하게 됩니다 . 대신 큰따옴표를 사용할 수 있습니다. http://tldp.org/LDP/abs/html/quoting.html

편집하다

이전에 모든 작은따옴표를 닫고 변수 다음에 다시 열었지만 변수를 인용하지 않았기 때문에 여전히 잘못 읽을 수 있다는 것을 깨달았습니다. 해당 명령의 모든 항목에 작은따옴표가 필요한지 확실하지 않지만, 필요한 경우 다음과 같이 큰따옴표를 넣을 수 있습니다.

라인을 변경하세요:

curl -s -H 'Host: flex-capacity-na.amazon.com' -H 'Cookie: session-token='$ses_t'' -H 'x-amz-access-token: '$amz_t'' -H 'x-flex-instance-id: '$flx_id'' -H 'Accept: */*' -H 'User-Agent: iOS/10.2.2 (iPhone Darwin) Model/iPhone Platform/iPhone6,1 RabbitiOS/2.0.141' -H 'Accept-Language: en-us' --compressed 'https://flex-capacity-na.amazon.com/GetOffersForProvider?serviceAreaIds=122' >> output.txt

도착하다:

curl -s -H 'Host: flex-capacity-na.amazon.com' -H 'Cookie: session-token='"$ses_t" -H 'x-amz-access-token: '"$amz_t" -H 'x-flex-instance-id: '"$flx_id" -H 'Accept: */*' -H 'User-Agent: iOS/10.2.2 (iPhone Darwin) Model/iPhone Platform/iPhone6,1 RabbitiOS/2.0.141' -H 'Accept-Language: en-us' --compressed 'https://flex-capacity-na.amazon.com/GetOffersForProvider?serviceAreaIds=122' >> output.txt

그러나 나는 이것이 또한 효과가 있을 것이라고 생각한다:

curl -s -H 'Host: flex-capacity-na.amazon.com' -H "Cookie: session-token=$ses_t" -H "x-amz-access-token: $amz_t" -H "x-flex-instance-id: $flx_id" -H 'Accept: */*' -H 'User-Agent: iOS/10.2.2 (iPhone Darwin) Model/iPhone Platform/iPhone6,1 RabbitiOS/2.0.141' -H 'Accept-Language: en-us' --compressed 'https://flex-capacity-na.amazon.com/GetOffersForProvider?serviceAreaIds=122' >> output.txt

관련 정보