IFTTT和Raspberry pi:从终端向IFTTT Web请求分配值

时间:2018-08-29 12:09:38

标签: shell raspberry-pi ifttt

我在IFTTT中制作了一个Webhook Applet,当“打印”动作触发时,它将向我发送邮件

在URLs 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:我对Shell脚本的基本了解为零。这是我第一次这样做

1 个答案:

答案 0 :(得分:1)

单引号内的表达式不会在shell中扩展,它们被当作文字。这意味着,如果您将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\"}"