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

如何在保留格式的同时更新ASCII艺术中的动态值?(Bash/Python)

解决Bash中保留ASCII艺术格式并替换变量的问题

Bash 方案1:使用 envsubst 工具

这是最稳妥的方式,envsubst 仅替换环境变量,完全不会破坏ASCII艺术的原有格式。

操作步骤:

  1. 将你的ASCII艺术保存为模板文件(比如 status_template.txt),内容保留带变量占位符的原始格式。
  2. 在Bash中定义需要替换的变量:
CPU_W=120
CPU_Freq=3600
GPU_W=80
GPU=1800
size=45
  1. 执行替换并输出:
envsubst < status_template.txt

如果要避免意外替换其他环境变量,可以指定仅替换目标变量:

envsubst '${CPU_W},${CPU_Freq},${GPU_W},${GPU},${size}' < status_template.txt

Bash 方案2:无引号Heredoc + 关闭通配符

如果不想依赖外部文件,直接在脚本内写Heredoc,只需关闭Bash的通配符扩展,防止特殊字符(如*)被错误解析:

# 定义变量
CPU_W=120
CPU_Freq=3600
GPU_W=80
GPU=1800
size=45

# 关闭通配符扩展,避免格式破坏
set -f

# 无引号Heredoc会自动替换变量,同时保留格式
cat << EOF
========================================================
|               |    |          |    |                 |
|               |    |          |    |                 |
|      CPU      |    |   GPU    |    |      HDD        |
|               |    |          |    |                 |
|               |    |          |    |                 |
| ${CPU_W}W     |    |          |    |                 |
| ${CPU_Freq}MHz|    |          |    |Avail Mem${size}G|
|               |    |${GPU_W}W |    | Used Mem${size}G|
|               |    |${GPU}Mhz |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
========================================================
EOF

# 恢复通配符扩展(可选)
set +f

Python 方案

用Python处理更灵活,字符串格式化只会替换指定占位符,完全保证格式不变:

# 定义变量字典
status_vars = {
    "CPU_W": 120,
    "CPU_Freq": 3600,
    "GPU_W": 80,
    "GPU": 1800,
    "size": 45
}

# 保留原始格式的ASCII模板
ascii_template = """========================================================
|               |    |          |    |                 |
|               |    |          |    |                 |
|      CPU      |    |   GPU    |    |      HDD        |
|               |    |          |    |                 |
|               |    |          |    |                 |
| {CPU_W}W     |    |          |    |                 |
| {CPU_Freq}MHz|    |          |    |Avail Mem{size}G|
|               |    |{GPU_W}W |    | Used Mem{size}G|
|               |    |{GPU}Mhz |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
========================================================
"""

# 替换变量并输出
print(ascii_template.format(**status_vars))

如果想保留你原来的${变量名}格式,可以用string.Template:

from string import Template

status_vars = {
    "CPU_W": 120,
    "CPU_Freq": 3600,
    "GPU_W": 80,
    "GPU": 1800,
    "size": 45
}

ascii_template = Template("""========================================================
|               |    |          |    |                 |
|               |    |          |    |                 |
|      CPU      |    |   GPU    |    |      HDD        |
|               |    |          |    |                 |
|               |    |          |    |                 |
| ${CPU_W}W     |    |          |    |                 |
| ${CPU_Freq}MHz|    |          |    |Avail Mem${size}G|
|               |    |${GPU_W}W |    | Used Mem${size}G|
|               |    |${GPU}Mhz |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
|               |    |          |    |                 |
========================================================
""")

print(ascii_template.substitute(status_vars))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:24:37