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

Shell脚本中如何解析含双美元符的变量并用于curl命令?

解决Shell脚本中curl传递含$符号变量的问题

问题根源

  • 变量赋值错误:原代码用双引号定义auth变量时,Shell会把$zY59kBuIpKeG4q1526phJ9识别为变量名(该变量不存在会被替换为空),导致auth值丢失部分内容。
  • curl变量未展开:原curl请求的Header用单引号包裹,Shell不会解析单引号内的$auth变量,会直接把$auth作为字符串发送,而非变量实际值。

修正方案

1. 正确定义含$符号的变量

用单引号包裹字符串,避免Shell解析内部的$符号:

local auth='$3xLxLBcsKv$zY59kBuIpKeG4q1526phJ9'

如果必须使用双引号(比如字符串内有其他需要展开的内容),需对$符号转义:

local auth="$3xLxLBcsKv\$zY59kBuIpKeG4q1526phJ9"

2. 修正curl命令的Header写法

将Header部分的单引号改为双引号,让Shell正常展开$auth变量:

curl --connect-timeout 2 -H "Extender-Auth: $auth" https://192.168.5.1/1/

也可采用单引号+双引号的混合写法(适合Header包含其他特殊字符的场景):

curl --connect-timeout 2 -H 'Extender-Auth: '"$auth" https://192.168.5.1/1/

完整示例代码

#!/bin/bash
# 正确定义含$符号的变量
local auth='$3xLxLBcsKv$zY59kBuIpKeG4q1526phJ9'
# 执行curl请求
curl --connect-timeout 2 -H "Extender-Auth: $auth" https://192.168.5.1/1/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:12:41