Lorsque j'utilise des valeurs réelles sur la commande curl
dans le script suivant, cela fonctionne et me donne un résultat, mais lorsque j'utilise des variables, cela ne fonctionne pas correctement
Je pense que c'est un problème avec la façon dont je les définis sur la commande
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
Il s'agit de la commande que j'essaie d'exécuter dans le script ci-dessus mentionne que les fichiers txt contiennent uniquement certaines valeurs sans valeurs parasites.
Essayez quelque chose comme ceci:
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
Utilisez des guillemets simples pour les chaînes fixes (c'est-à-dire sans aucune variable) et des guillemets doubles pour les chaînes qui nécessitent une interpolation variable.
Vous ne pouvez pas utiliser de guillemets simples sur vos variables. Cela empêchera bash d'interpréter le $
Caractère spécial. Vous pouvez utiliser des guillemets doubles à la place. http://tldp.org/LDP/abs/html/quoting.html
[~ # ~] modifier [~ # ~]
Je me rends compte maintenant que vous fermez tous vos guillemets simples avant et que vous les rouvrez après vos variables, mais les variables sont probablement encore lues incorrectement car elles ne sont pas citées. Je ne suis pas sûr que vous ayez même besoin de tout mettre entre guillemets dans cette commande, mais si vous le faites, vous pouvez toujours mettre vos guillemets comme ci-dessous:
Changez de ligne:
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
Mais je pense que cela fonctionnerait aussi:
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