IFTTT и Raspberry pi: присвоение значения с терминала веб-запросу IFTTT

Я сделал апплет Webhook в IFTTT, который отправлял мне письмо, когда срабатывало действие «печать».

В теле URL-адресов JSON я могу указать такие значения

curl -X POST -H "Content-Type: application/json" -d '{"value1":"9"}' https://maker.ifttt.com/trigger/print/with/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Что я хочу сделать, так это найти свой общедоступный IP-адрес и передать его как value1.

Я нашел свой IP по

value1=$(dig +short myip.opendns.com @resolver1.opendns.com)
echo $value1

Как я могу передать value1 указанному выше URL-адресу

Я попытался

'{"value1":"$value1"}' 
'{"value1":{{$value1}}}' 
'{"value1":{{value1}}}'

P.S. У меня нет базовых знаний в сценариях оболочки. Это первый раз, когда я делаю это


person Athul    schedule 29.08.2018    source источник


Ответы (1)


Выражения внутри одинарных кавычек не раскрываются в оболочке, они воспринимаются как буквальные. Это означает, что если вы сохраните свой IP-адрес в переменной с именем ip следующим образом:

ip=$(dig +short myip.opendns.com @resolver1.opendns.com)

и вы поместите это в одинарные кавычки, оно не будет расширено:

echo '$ip'
$ip

тогда как если вы поместите его в двойные кавычки, он будет расширен:

echo "$ip"
192.80.136.233

Итак, вам нужны двойные кавычки, но это вызовет проблему, потому что вам нужны двойные кавычки вокруг ваших строк JSON, поэтому вам нужно избегать их, добавляя к ним обратную косую черту. Итак, вы хотите:

curl -X POST -H "Content-Type: application/json" -d "{\"value1\":\"$ip\"}"
person Mark Setchell    schedule 29.08.2018
comment
Спасибо за ответ. Я уже обнаружил, что в конце этой ссылка . Хотя я не понял код, я попробовал, и это сработало. Вот как это выглядит сейчас json="{\"value1\":\"${value1}\"}" ‹br/›curl -X POST -H "Content-Type: application/json" -d "${json}" https://maker.ifttt.com/trigger/print/with/key/xxxxxxxxxxxxxxxxxxxxxxxx - person Athul; 30.08.2018