我想用多个标头发出curl
请求。解决方法是发出此命令:
curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue" ...
我的目标是只使用一个变量和所有标题,如:
headers='-H "keyheader: value" -H "2ndkeyheader: 2ndvalue" '
curl $headers
发送
curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue"
目前,问题是:我可以使用'
或"
来声明我的字符串,但bash
会尝试在"-H"
之后运行command unknown
作为参数然后回答:
select item_1,item_2,count
from (select t.*
,row_number() over(partition by case when item_1<item_2 then item_1 else item_2 end,
case when item_1>item_2 then item_1 else item_2 end
order by item_1) as rnum
from tbl t
) t
where rnum=1
想知道这里出了什么问题。
答案 0 :(得分:12)
你只需要使用一个数组而不一个变量来传递引用的字符串。
declare -a curlArgs=('-H' "keyheader: value" '-H' "2ndkeyheader: 2ndvalue")
现在以这种方式完全传递这个数组,数组扩展(带双引号)处理双引号内的参数,以便在传递时不被分割。
curl "${curlArgs[@]}"
如需更深入了解为什么将变量中的参数设置失败,请参阅BashFAQ/050 - I'm trying to put a command in a variable, but the complex cases always fail!