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

Azure DevOps Pipeline中CURL命令调用API报错求助

Azure DevOps Pipeline curl调用API报语法错误的解决方法

问题详情

执行curl命令时触发bash语法错误:

/azp/_work/_temp/xxxxxx-xx-xxxxxx-xxxx-xxxxxxxxxxxxx.sh: line 4: unexpected EOF while looking for matching `"'
/azp/_work/_temp/xxxxxx-xx-xxxxxx-xxxx-xxxxxxxxxxxxx.sh: line 5: syntax error: unexpected end of file
##[error]Bash exited with code '2'

对应的Pipeline脚本:

steps:
- script: |
    echo "Sending POST Request..."
    curl -X POST "URL" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer PATTOKEN"
  displayName: 'Send POST request using CURL'

错误原因

这类错误的核心是bash解析脚本时遇到了引号不匹配,或者换行反斜杠后存在多余空白字符,导致命令被错误拆分。

解决方案

1. 清理换行反斜杠后的空白

确保每一行末尾的\是该行最后一个字符,后面没有空格、制表符或其他隐藏字符。修改后的脚本:

steps:
- script: |
    echo "Sending POST Request..."
    curl -X POST "URL" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer PATTOKEN"
  displayName: 'Send POST request using CURL'

(注:检查并删除\后面的所有空白内容)

2. 改用单引号包裹参数

如果你的URL或PAT包含&、$等bash特殊字符,双引号会触发变量解析或转义冲突,改用单引号可以避免这类问题:

steps:
- script: |
    echo "Sending POST Request..."
    curl -X POST 'URL' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer PATTOKEN'
  displayName: 'Send POST request using CURL'

3. 合并curl命令为单行

彻底避免换行解析问题,将所有curl参数整合到一行:

steps:
- script: |
    echo "Sending POST Request..."
    curl -X POST "URL" -H "Content-Type: application/json" -H "Authorization: Bearer PATTOKEN"
  displayName: 'Send POST request using CURL'

额外建议:安全存储敏感信息

不要明文写PAT这类敏感内容,使用Azure DevOps的秘密变量存储,通过环境变量引用:

steps:
- script: |
    echo "Sending POST Request..."
    curl -X POST "URL" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(PAT_TOKEN)"
  displayName: 'Send POST request using CURL'
  env:
    PAT_TOKEN: $(YourSecretPATVariable)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:13:19