html tool

2021年11月24日星期三

curl 的post参数 单双引号问题

问题:

要将curl中的data如下:

-d $'{"time_from":1637683200,"time_to":1637769599,"sql":"umid = \'78fd32b3-981-4653-bb26f32f37447de\'"}'

设置为变量如下:[以下的语法是不对的,表达一下目标]

-d $'{{"time_from":${st},"time_to":${ed},"sql":"umid = \'${umid}\'"}'


解决方式:

-d $'{"sql":"umid = \''"${umid}"$'\'","time_from":'"${st}"' ,"time_to":'"${ed}"'}'

解释:

' "${st}" '

 (参考:https://cloud.tencent.com/developer/ask/209654)

被解析为单引号部分'{"summary": "'(其中双引号是文字的),紧接着是双引号部分"$summary"(变量在其中扩展),紧接着是另一个单引号-quoted节'", "description"...'等。由于有这些部分之间没有空格,就会被视为一个长的参数curl

$'...‘

猜测应该是包含\'的变量,但没有找到说明位置,但测试 echo $'\'ass ' 和 echo '\' ass'可以正常执行如下:

[root@lijie-120 ld_es]# echo $'\'ass '

'ass

[root@lijie-120 ld_es]# echo '\'ass '

>





没有评论:

发表评论