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

Bash脚本curl命令变量替换后Bearer授权异常如何解决?

问题根因

你手动添加的转义单引号\'在Bash变量展开阶段不会被识别为参数边界标记,反而会作为实际值的一部分被传递给curl,最终请求头里的Authorization字段被额外包裹了一层不必要的单引号,服务端无法正确解析Bearer令牌,因此返回错误。

你可以在脚本开头添加set -x执行验证,会看到实际传给curl的Header参数带有多余的单引号。

修正方案

方案1:直接简化写法(快速修复)

不要将curl命令前缀存入变量,直接调用时用双引号包裹Header变量即可,避免额外转义:

OPTS_HOST='https://example.com/api'
OPTS_USER='Authorization:Bearer sdfsdfsfd/1Fdsdfsdfdf'
OPTS_CURL="--silent"

curl $OPTS_CURL -H "$OPTS_USER" "$OPTS_HOST"

方案2:数组存储参数(更规范,避免参数含空格时的拆分问题)

如果需要复用curl参数,更稳妥的做法是用Bash数组存储所有参数,彻底避免参数拆分错误:

OPTS_HOST='https://example.com/api'
# 数组存储所有curl参数
CURL_ARGS=(
  --silent
  -H "Authorization:Bearer sdfsdfsfd/1Fdsdfsdfdf"
)

# 展开数组执行命令
curl "${CURL_ARGS[@]}" "$OPTS_HOST"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:48:05