IFTTT & Raspberry pi:将值从终端分配给 IFTTT 网络请求

IFTTT & Raspberry pi: Assigning value from terminal to IFTTT web request

我在 IFTTT 中制作了一个 Webhook 小程序,它会在 "print" 动作触发时向我发送邮件

在 URLs JSON 正文中,我可以给出这样的值

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

我想做的是找到我的 public IP 地址并将其作为值 1 传递。

我通过

找到了我的 IP
value1=$(dig +short myip.opendns.com @resolver1.opendns.com)
echo $value1

如何将 value1 传递给上面 URL

我试过了

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

P.S: 我对 shell 脚本的基础知识为零。这是我第一次做

单引号内的表达式在 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\"}"