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

Shell脚本中如何去除变量双引号解决curl API认证失败问题

Shell脚本curl调用API时token被额外添加双引号的解决方法

你之前尝试的两种curl传参写法本身语法没有问题,set -x调试输出中显示的双引号如果是真的被传入请求,根本原因是$login_token变量本身就存储了多余的双引号,而非shell传参时自动添加的。调试输出里的双引号部分是shell为了标识参数边界的显示标记,不会实际传给命令,只有变量本身携带的引号才会被代入请求。


1. 排查变量是否自带多余引号

执行以下代码确认变量的原始值:

login_token="eUsadjb@dsi-0nknhsnc"
# 直接打印变量,肉眼看是否首尾有双引号
echo "token值:$login_token"
# 打印字符编码确认,正常不会出现双引号对应的ASCII码22
echo -n "$login_token" | od -c

2. 清理变量中的多余引号

如果确认变量首尾携带多余双引号,用shell参数扩展直接移除:

# 移除变量中所有双引号
login_token="${login_token//\"/}"

3. 构造正确的curl请求

清理变量后直接用双引号包裹整个请求头即可:

set -x
login_token="eUsadjb@dsi-0nknhsnc"
# 先清理多余引号
login_token="${login_token//\"/}"
API_Response=$(curl -X POST \
  --header 'Accept: application/json' \
  --header "Authorization: Bearer $login_token" \
  'https://example.com')
set +x

兼容方案:用数组存储curl参数(避免特殊解析场景问题)

如果你的shell环境存在特殊的参数解析规则,可以用数组存储所有curl参数,彻底避免引号拼接异常:

login_token="eUsadjb@dsi-0nknhsnc"
login_token="${login_token//\"/}"

curl_params=(
  -X POST
  --header 'Accept: application/json'
  --header "Authorization: Bearer $login_token"
  'https://example.com'
)

API_Response=$(curl "${curl_params[@]}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 11:36:01