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

使用envsubst替换变量时如何避免换行,生成单行字符串?

解决envsubst替换变量时自动插入换行符的问题

这问题是因为envsubst默认把反斜杠当成转义字符,当变量$foo后面紧跟单个反斜杠时,会被错误解析成换行触发符,导致替换后自动换行。给你两个可行的解决办法:

  • 修改原文件写法
    把原文件test.properties里的单个反斜杠改成双反斜杠,内容改成:
$foo\\text\\word,$foo\\text2\\word2,$foo\\text3\\word3

之后再执行原命令:

envsubst < test.properties > temp.properties

这样替换后会保留单个反斜杠,同时不会出现多余换行,得到你想要的结果。

  • 不修改原文件,用sed配合处理
    如果不想改动原文件,就用sed先把原文件里的单个反斜杠临时转成双反斜杠,让envsubst正确解析,处理完再转回来:
sed 's/\\/\\\\/g' test.properties | envsubst | sed 's/\\\\/\\/g' > temp.properties

这条命令分三步:

  1. 第一步sed把所有单个反斜杠替换成双反斜杠
  2. 用envsubst完成变量替换
  3. 最后再用sed把双反斜杠转回单个反斜杠,输出到目标文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:35:41