Shell IFTTT&;Raspberry pi:将值从终端分配给IFTTT web请求
我在IFTTT中制作了一个Webhook小程序,当“打印”动作触发时,它会向我发送一封邮件 在URL JSON正文中,我可以给出如下值Shell IFTTT&;Raspberry pi:将值从终端分配给IFTTT web请求,shell,raspberry-pi,ifttt,Shell,Raspberry Pi,Ifttt,我在IFTTT中制作了一个Webhook小程序,当“打印”动作触发时,它会向我发送一封邮件 在URL JSON正文中,我可以给出如下值 curl -X POST -H "Content-Type: application/json" -d '{"value1":"9"}' https://maker.ifttt.com/trigger/print/with/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 我要做的是找到我的公共ip地址并将其作为value1传递 我找到了我的
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}}}'
附言:我对shell脚本没有任何基本知识。这是我第一次这样做单引号中的表达式在shell中不会展开,它们被视为文本。这意味着,如果将IP地址存储在名为
IP
的变量中,如下所示:
ip=$(dig +short myip.opendns.com @resolver1.opendns.com)
如果你把它放在单引号中,它就不会被扩展:
echo '$ip'
$ip
echo "$ip"
192.80.136.233
然而,如果将其放在双引号中,它将被展开:
echo '$ip'
$ip
echo "$ip"
192.80.136.233
因此,您需要双引号,但这将导致一个问题,因为您需要在JSON字符串周围使用双引号,所以您需要通过在它们前面加反斜杠来转义它们。所以,你想要:
curl -X POST -H "Content-Type: application/json" -d "{\"value1\":\"$ip\"}"
谢谢你的回复。最后我已经发现了这一点。尽管我不理解代码,但我还是尝试了一下,结果成功了。这就是它现在的样子
json=“{\'value1\\”:\“${value1}\”}
curl-X POST-H“内容类型:application/json”-d“${json}”https://maker.ifttt.com/trigger/print/with/key/xxxxxxxxxxxxxxxxxxxxxxxx