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

Linux Bash中cat文本文件时如何替换输出已声明的变量值

实现查看文件时自动解析替换Shell变量的方法

现有场景

  • 存在文本文件test.txt,文件内容为字面量字符串$test
  • 终端已声明变量:test=hello
  • 直接执行cat test.txt仅会输出原字符串$test,无法获取变量对应的实际值

可用方案

方案1:使用envsubst(最推荐,专门用于环境变量替换)

首先需要将变量导出为环境变量,否则工具无法识别:

export test=hello

直接执行以下命令即可输出替换后的内容:

envsubst < test.txt

执行后终端会输出变量实际值hello。

提示:如果需要把替换后的内容永久写入原文件,不要直接重定向到原文件(会清空文件内容),可以用临时文件中转:

envsubst < test.txt > tmp.txt && mv tmp.txt test.txt

如果文件中存在不需要替换的$开头字面量,可以指定仅替换目标变量,比如envsubst '${test}' < test.txt就只会替换$test,其余内容保持不变。

方案2:使用eval+echo(适合无envsubst的精简系统)

不需要额外安装工具,直接用Shell内置能力即可实现:

eval "echo \"$(cat test.txt)\""

原理是先读取文件全量内容,再通过eval触发Shell的变量解析逻辑,完成替换后输出。

方案3:使用perl做正则替换(适合复杂多变量替换场景)

如果文件中存在大量不同的变量需要批量替换,可以用Perl一行命令处理:

perl -pe 's/\$(\w+)/$ENV{$1}/g' test.txt

命令会自动匹配文件中所有$+变量名格式的内容,替换为当前Shell环境中对应变量的实际值。


  • 以上所有命令默认都不会修改原文件,仅将替换后的结果打印到终端,确认替换结果符合预期后再写回文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 05:12:16