You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10环境下shell脚本内curl命令执行失败单独运行正常求助

排查方向
  • 核对请求参数大小写与鉴权令牌有效性
    从verbose日志可见,脚本执行时实际发起的GET请求参数为UserId(首字母U大写),但你脚本中写的URL参数是userID(ID大写),绝大多数服务端的查询参数为大小写敏感,参数不匹配会直接导致鉴权失败返回403。同时对比日志中Authorization头的令牌长度和你脚本中填写的令牌,确认是否存在sh环境解析时截断令牌、特殊字符转义丢失的问题。
  • 确认两个环境调用的curl是否为同一程序
    CMD下直接执行curl默认调用Windows系统自带的curl.exe,而sh环境(Git Bash/Cygwin/WSL等)下默认调用的是对应环境内置的curl,两个版本的参数解析规则、默认SSL配置、代理规则都存在差异。分别在CMD执行where curl、在脚本中添加which curl,对比返回的路径是否一致。如果不一致,可以在脚本中将curl替换为绝对路径的Windows原生curl,比如C:\Windows\System32\curl.exe测试。
  • 测试URL与参数转义逻辑
    sh环境对&、引号、反斜杠的转义规则和CMD不同:
    1. 脚本中的URL如果没有被正确包裹,&会被sh识别为后台运行指令,导致URL被截断
    2. 输出路径中的\在sh中会被识别为转义符,可修改为/c/Users/user1/xxx这类POSIX格式路径测试
      你可以在脚本开头添加set -x开启调试模式,执行脚本时会输出实际解析后的完整curl命令,和你手动执行的命令逐字符对比是否存在差异。
  • 检查网络环境差异
    确认sh环境是否配置了独立的代理、hosts规则,导致两个环境的请求出口IP、目标解析IP不同,被服务端的访问策略拦截返回403。可分别在CMD和sh环境下执行公网IP查询命令,对比出口IP是否一致。
  • 确认脚本编码格式
    即使已移除换行符\r,如果脚本是UTF-8带BOM编码,开头的不可见BOM字符会导致sh解析第一行命令时参数异常,可将脚本另存为UTF-8无BOM格式后重试。

内容的提问来源于stack exchange,提问作者PPSATO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:36:05