放入json中的Cocatenate 2个变量不起作用
我需要连接两个变量,但是当我执行bash代码时,我得到了这个错误放入json中的Cocatenate 2个变量不起作用,json,bash,api,curl,cloudflare,Json,Bash,Api,Curl,Cloudflare,我需要连接两个变量,但是当我执行bash代码时,我得到了这个错误filters.api.malformed\u request\u body 我需要获取当前IP,以便能够向筛选器添加新IP,这是因为我需要使用两个变量,$a是防火墙规则中的当前IP,$b是我将添加的新IP 从 要保留现有值,请发出GET请求,并根据响应确定要在PUT请求中包含哪些字段(以及相应的值),这样可以避免任何不希望的覆盖 代码: 我也试过:“(ip.src在{'a$b'})”和: new_filter="$a $b" ..
filters.api.malformed\u request\u body
我需要获取当前IP,以便能够向筛选器添加新IP,这是因为我需要使用两个变量,$a
是防火墙规则中的当前IP,$b
是我将添加的新IP
从
要保留现有值,请发出GET请求,并根据响应确定要在PUT请求中包含哪些字段(以及相应的值),这样可以避免任何不希望的覆盖
代码:
我也试过:“(ip.src在{'a$b'})”和
:
new_filter="$a $b"
...
...
"(ip.src in {'$new_filter'})"
如果iecho$new\u filter
显示正确的结果:
new_filter="$a $b"
echo $new_filter
#122.16.89.10 137.77.77.77
当我使用变量$new\u filter
时,它也会显示此错误curl:(3)[globbing]第13列中不匹配的右括号/方括号
第13行是这一行-H“Content Type:application/json”\
都没用,为什么?我得到这个错误:
{
"result": null,
"success": false,
"errors": [
{
"code": 10014,
"message": "filters.api.malformed_request_body"
}
],
"messages": []
}
这是可行的:
({'$a'}中的ip.src)
好吧,让我们以您的第一个示例为例,修改它以打印JSON正文:
export a=122.16.89.10
export b=137.77.77.77
echo '[
{
"id": "ID",
"paused": false,
"expression": "(ip.src in {'$a'" "'$b'})",
"description": "Block IP"
}
]'
输出如下:
{
"id": "ID",
"paused": false,
"expression": "(ip.src in {122.16.89.10" "137.77.77.77})",
"description": "Block IP"
}
]
您可以看到JSON是无效的。双引号在表达式中不平衡
试试“expression:”({'$a'$b'}中的ip.src),
这将生成有效的JSON。试试”({'$a$b'}中的ip.src),
@oguzismail这是有效的,为什么?它与newfilter=“$a$b”
相同(我认为)。不,不一样。您没有引用$new\u filter
并将其扩展为两个单词,.“$new\u filter”…
也可以使用。这在本例中适用,但通常不是一个好的做法。如果$a
或$b
应包含空格,则会出现分词问题again@oguzismail它生成“expression:”({122.16.89.10 137.77.77.77}中的ip.src)
——根据文档,不需要在过滤器字符串内部引用ip。$a
和$b
中的空格不应该破坏任何东西。我是说在这种情况下,$a
和$b
不带引号;没关系
{
"id": "ID",
"paused": false,
"expression": "(ip.src in {122.16.89.10" "137.77.77.77})",
"description": "Block IP"
}
]