我遇到了一个我似乎无法解决的问题。
我需要向给定的网址发出curl请求,并且该网址需要一个美元符号。
所以,例如:
www.example.com/mypath/function&$filter=whatever
现在,如果我将URl放在单个刻度中,或者如果我用反斜杠转义美元符号,然后将其放在双引号中,我可以从命令行执行此操作。
显然,如果您不执行上述任何一项操作,则会出现问题,因为bash会看到' $'并将其后的任何内容解释为变量名称。
所以,当我尝试:
URL="www.example.com/mypath/function&\\\$filter=whatever"
MYOUTPUT=$(curl -s --header "Authorization: $HEADER" "$URL")
它无法正常工作。
当我尝试
时URL="www.example.com/mypath/function&\$filter=whatever"
MYOUTPUT=$(curl -s --header "Authorization: $HEADER" "'$URL'")
它无法正常工作。
我做错了什么?
我可以告诉它无法正常工作,因为服务器在脚本中的响应方式与在命令行中的响应方式不同。如果查询没有正确完成,网站会以某种默认方式响应,我总是通过脚本获得默认响应。
答案 0 :(得分:2)
如果您在字符串中放置文字$
,bash将不会尝试在将来的扩展中解释它:
URL='www.example.com/mypath/function&$filter=whatever'
MYOUTPUT=$(curl -s --header "Authorization: $HEADER" "$URL")