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

如何使用curl或bash提交文件时替换环境变量

curl提交文件时自动替换内部环境变量的实现方法

首先需要修正你当前test.json的格式,原有写法会生成多余的单引号,调整为可被正常识别的变量格式:

{
  "name": "$NAME_VAR"
}

你可以通过以下两种常用方案实现提交时自动替换环境变量:

方案1:使用envsubst工具实现(推荐)

envsubst属于GNU gettext组件,绝大多数Linux发行版默认预装,macOS可通过brew install gettext安装。处理逻辑是先读取test.json替换变量,再将结果通过管道传给curl,命令如下:

# 先导出要替换的环境变量
export NAME_VAR="你要传入的实际名称"
# 替换后提交
envsubst < test.json | curl -X POST -H 'Content-Type: application/json' --data-binary @- http://test-server/some/path

其中@-代表curl从标准输入读取提交的数据。如果需要只替换指定环境变量,避免误替换文件内其他$开头的内容,可以指定替换列表:

envsubst '$NAME_VAR$OTHER_VAR' < test.json | curl -X POST -H 'Content-Type: application/json' --data-binary @- http://test-server/some/path

方案2:使用Bash heredoc实现(无需额外工具)

不用单独维护test.json文件,直接把JSON内容写在curl命令的heredoc段中,Bash会自动完成变量替换:

export NAME_VAR="你要传入的实际名称"
curl -X POST -H 'Content-Type: application/json' --data-binary @- http://test-server/some/path <<EOF
{
  "name": "$NAME_VAR"
}
EOF

注意事项

  • 变量使用前需要提前通过export 变量名=值的方式导出,否则替换后对应位置会为空
  • 如果变量值包含双引号、换行、斜杠等JSON特殊字符,需要先做转义处理,推荐用jq工具自动转义:
    NAME_VAR=$(jq -Rs . <<< "包含特殊字符的原始值")
    
  • 替换完成后可先单独执行envsubst < test.json查看替换后的JSON格式是否正确,再对接curl提交,避免格式错误导致请求失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:45:02