4

The following curl statement works OK in my shell script.

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

The Mobile number is expanded as expected. But when I use a variable for the message parameter, I get $myvar output instead of the expanded variable.

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

How do I use the variable for the message?

shantanuo
  • 31,689
  • 78
  • 245
  • 403

3 Answers3

10

Single quotes inhibit expansion. Switch up the quotes.

curl ...'..."'"$myvar"'"...'...
Ignacio Vazquez-Abrams
  • 776,304
  • 153
  • 1,341
  • 1,358
4

$myvar is wrapped in single quotes, $mnumber is not. It doesn't matter that the innermost quotes are double, it's the outermost quotes that the shell uses to determine if it should do variable expansion or not.

Rewrite it like this (I shortened the URLs to make it readable):

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

Notice the extra single quotes before and after $myvar.

Theo
  • 131,503
  • 21
  • 160
  • 205
0

It depends on the shell you are running. "$var" will work on csh. Under windows you should use the "%" notation.

Luixv
  • 8,590
  • 21
  • 84
  • 121