shell - shell 脚本中的命令 curl 格式错误
问题描述
为什么当我在 ssh 会话中使用 curl 时它运行良好,但是当我在 shell 脚本中使用它时它返回错误。
在 ssh 会话中:
[root@XXXX scripts]# export host_name="http://XXXX:number_port"
[root@XXXX scripts]# echo "curl -u GET ${host_name}/application/listteam"
curl -u GET http://XXXX:number_port/application/listteam
但是当我在 shell 脚本中使用它时:
list_team=$(curl GET "${host_name}/application/listteam")
echo "$list_team"
它返回:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: GET; Name or service not known
curl: (3) <url> malformed
我看到无法解析主机,但是为什么当我在 ssh 会话中尝试时它可以工作?
请问有什么想法吗?
解决方案
curl -u GET ${host_name}/application/listteam" # interactive
list_team=$(curl GET "${host_name}/application/listteam") # non-interactive
在第一个示例中,您有“-u GET”。“-u”参数需要一个参数,并将curl
单词“GET”解释为该参数。然后它继续将下一个命令行参数解释为要获取的 URL。
在第二个示例中,您只有“GET”而没有任何“-u”。curl
正在将“GET”一词解释为它应该获取的 URL 之一。您收到错误消息,因为它无法将“GET”一词解释为有效的 URL。
“-u”用于指定请求的用户名和密码。如果您确实需要指定单词“GET”作为用户名,那么您的第二个示例应该像第一个示例一样具有“-u GET”。
另一方面,如果“GET”这个词应该是要发出的 HTTP 请求的类型,那么您应该使用“-X GET”。或者直接忽略它,因为 curl 默认会执行 GET 请求。
推荐阅读
- sql - 无法通过嵌套属性 Rails API 创建记录
- python - 如何将日期作为字符串转换为日期类型
- r - 有没有办法在合并数千个数据帧时在 R 中创建重复列?
- python - 为什么笛卡尔积会产生“TypeError:0-d 数组上的迭代”?
- vim - 当我在 vim 中搜索然后按“esc”光标返回到上一个位置
- c# - 如何将加载了文本(数据)的列表调用到类的每个实例
- .net - 在发布模式下编译时,.NET 进程的内存空间是否安全?
- c++ - ZMQ Dealer 向自己发送和接收消息
- macos - 为什么我在 AppleScript 命令中的击键不能将打开的电子邮件信息变成“外发”信息?
- flutter - 长按 BottomNavigationBarItem