다음 스크립트에서 명령의 실제 값을 사용하면 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