2010-11-11 2 views
3

Следующая инструкция curl работает нормально в моем сценарии оболочки.расширяющаяся переменная в CURL

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

Мобильный номер расширен, как ожидалось. Но когда я использую переменную для параметра message, я получаю выход $ myvar вместо расширенной переменной.

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

Как использовать переменную для сообщения?

ответ

8

Одиночные кавычки препятствуют расширению. Переключить кавычки.

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

Это зависит от оболочки, которую вы используете. «$ var» будет работать в csh. Под окнами вы должны использовать нотацию «%».

3

$myvar завернуты в одинарные кавычки, $mnumber нет. Не имеет значения, что самые внутренние цитаты являются двойными, это самые внешние кавычки, которые использует оболочка, чтобы определить, должно ли оно делать расширение переменной или нет.

Rewrite это следующим образом (я сократил URL, чтобы сделать его доступным для чтения):

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

Обратите внимание, что дополнительные одинарные кавычки до и после $myvar.

Смежные вопросы