linux - bash 脚本中的 curl 请求在 URL 中需要美元符号

标签 linux bash curl escaping urlencode

<分区>

我有一个似乎无法解决的问题。

我需要向给定的 URL 发出 curl 请求,并且该 URL 中需要美元符号。

所以,例如:

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'")

它不能正常工作。

我做错了什么?

我可以看出它无法正常工作,因为服务器在脚本中的响应方式与在命令行中的响应方式不同。如果查询没有正确完成,网站会以某种默认方式响应,我总是通过脚本获得默认响应。

最佳答案

如果你把字面量 $ 放在字符串中,bash 将不会在以后的扩展中尝试解释它:

URL='www.example.com/mypath/function&$filter=whatever'
MYOUTPUT=$(curl -s --header "Authorization: $HEADER" "$URL")

关于linux - bash 脚本中的 curl 请求在 URL 中需要美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45090514/

相关文章:

c - 如何在 Linux 中创建隐藏文件?

bash - 有什么方法可以向 unix 中的程序提供标准输入/输出而不是文件?

php - 如何将值从 HTML 表单传递到 CURLOPT_POSTFIELDS

unix - 命令行将curl连接到我的应用程序使用socket()打开的整数套接字

php - 通过 api 在 wordpress.com 中添加特色图片

c - 使用 Poll() 中断 BeagleBone Black GPIO

linux - 在 Linux 上将 Crashpad 与 Qt 集成

python - 导入错误 : cannot import name QtGui

linux - 如何打印模式中的第 n 行?

mysql - 将多行很长的字符串插入 MySQL 数据库