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

sed替换配置文件时不渲染fernet_key参数值问题求助

核心问题原因

你遇到的是Shell引号规则导致的变量未展开问题:sed语句中你用了单引号包裹替换规则,单引号会强制将内部所有字符按字面量解析,不会处理任何变量替换、转义逻辑,所以$fernet_key被直接当做普通字符串输出。

修复方案

直接将sed的替换规则改用双引号包裹即可,正确代码如下:

fernet_key="$(python3 -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
# Linux 环境使用
sed -i -e "s|{FERNET_KEY}|$fernet_key|g" ~/config.yml
# macOS 环境使用(mac自带sed要求-i参数后必须指定备份后缀,传空字符串代表不生成备份)
sed -i '' -e "s|{FERNET_KEY}|$fernet_key|g" ~/config.yml
额外说明
  • 你选择|作为sed分隔符是正确的:Fernet生成的密钥是URL安全的Base64编码,字符集仅包含大小写字母、数字、-、_、=,不会出现|字符,不会触发分隔符冲突。
  • 你之前的echo操作可以正常执行,正是因为echo后的语句用了双引号包裹,变量会被正常展开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:39:03