Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell IFTTT&;Raspberry pi:将值从终端分配给IFTTT web请求_Shell_Raspberry Pi_Ifttt - Fatal编程技术网

Shell IFTTT&;Raspberry pi:将值从终端分配给IFTTT web请求

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传递 我找到了我的

我在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传递

我找到了我的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