2010-11-11 9 views
3

L'instruction curl suivante fonctionne correctement dans mon script shell.variable expand dans CURL

curl -Ld'username=user&password=password&source=oksoft&dmobile='$mnumber'&message=Slave is working OK' http://167.123.129.195/smsclient//api.php 

Le numéro de téléphone mobile est développé comme prévu. Mais quand j'utilise une variable pour le paramètre message, j'obtiens une sortie $ myvar au lieu de la variable développée.

curl -Ld'username=user&password=password&source=oksoft&dmobile='$mnumber'&message="$myvar"' http://167.123.129.195/smsclient//api.php 

Comment utiliser la variable pour le message?

Répondre

8

Les guillemets simples inhibent l'expansion. Changez les citations.

curl ...'..."'"$myvar"'"...'... 
0

Cela dépend du shell que vous utilisez. "$ var" fonctionnera sur csh. Sous Windows, vous devez utiliser la notation "%".

3

$myvar est enveloppé dans des guillemets simples, $mnumber ne l'est pas. Peu importe que les citations les plus internes soient doubles, ce sont les citations les plus externes que le shell utilise pour déterminer s'il doit faire une expansion variable ou non.

Rewrite comme ça (je raccourcit les URL pour le rendre lisible):

curl -Ld'...dmobile='$mnumber'&message="'$myvar'"' http://... 

Notez les guillemets supplémentaires avant et après $myvar.