curl: (3) Illegal characters found in URL解决方案

现象

shell脚本中使用curl命令出现下列错误:

* Illegal characters found in URL
* Closing connection -1
curl: (3) Illegal characters found in URL

原因

文本中含有\r等换行符,curl识别文本时将\r识别成了\r两个字符

解决办法

  • 方案一, 使用vi 命令检查
    例如:

    vi test.sh
    :set ff?
    

    输入:set ff? 前需要先按Esc键

    如果出现fileforma=dos那么就可以确定是这个问题
    可以使用以下命令转换程序格式:

    :set fileformat=unix
    :wq
    

    Esc输入:wq命令保存

  • 方案二, 使用dos2unix <scriptname>命令直接转换脚本格式为unix
    例如:

    dos2unix test.sh
    
  • 方案三, 直接删除链接文本中的\r字符
    命令如下:

    URL=${URL%$'\r'}
    

    例如:

      URL=$(curl -i -X GET -H "X-Auth-User: MyUserna,e" -H "X-Auth-Key: MyAPIKey" "https://urlToAuthServer.tld/auth/v1.0/" | grep "X-Storage-Url:" | awk '{print $2}')     
     
      URL=${URL%$'\r'}
      
      curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt
    

参考

1. https://stackoverflow.com/questions/35018899/using-curl-in-a-bash-script-and-getting-curl-3-illegal-characters-found-in-ur/62223019#62223019
2. http://oublog.cn/vps/linuxvps/259.html
3. https://www.nuomiphp.com/eplan/339794.html

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值