我在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传递。
我通过
找到了我的IPvalue1=$(dig +short myip.opendns.com @resolver1.opendns.com)
echo $value1
如何将value1传递到上述URL
我尝试了
'{"value1":"$value1"}'
'{"value1":{{$value1}}}'
'{"value1":{{value1}}}'
P.S:我对Shell脚本的基本了解为零。这是我第一次这样做
答案 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\"}"