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

TCL如何读取版本文件实现指定工艺对应AA、BB版本的查询与修改

TCL工艺版本查询修改脚本实现

实现思路

使用数组完全可以满足需求,工艺名称作为唯一的数组键,对应的值存储AA、BB两个版本号,查询和修改效率都很高。因为你的版本文件体积很小,脚本更新时整体重写文件比局部修改更稳妥,不会出现格式错乱问题。

完整可运行代码

# 定义存储版本的数组,key为工艺名,value为[AA版本 BB版本]列表
array set version_map {}

# 读取版本文件内容,如文件名不是tool_version请修改
set fp [open "tool_version" r]
set file_content [read $fp]
close $fp

# 按行拆分,保留表头
set lines [split $file_content "\n"]
set header [lindex $lines 0]

# 解析所有行存入数组,跳过表头和空行
foreach line [lrange $lines 1 end] {
    set trim_line [string trim $line]
    if {$trim_line eq ""} {
        continue
    }
    # 正则提取所有非空白字段,自动忽略多空格分隔
    set fields [regexp -all -inline {\S+} $trim_line]
    set process_name [lindex $fields 0]
    set aa_ver [lindex $fields 1]
    set bb_ver [lindex $fields 2]
    set version_map($process_name) [list $aa_ver $bb_ver]
}

# 接收用户输入的工艺名称
puts "请输入要查询的工艺名称:"
flush stdout
set target_process [string trim [gets stdin]]

# 版本查询逻辑
if {![info exists version_map($target_process)]} {
    puts "错误:未找到工艺【$target_process】的版本信息"
    exit 1
}
set current_aa [lindex $version_map($target_process) 0]
set current_bb [lindex $version_map($target_process) 1]
puts "===== 工艺 $target_process 版本信息 ====="
puts "AA_version: $current_aa"
puts "BB_version: $current_bb"

# 版本修改逻辑
puts "\n是否需要修改版本信息?输入y/Y确认,其他键直接退出:"
flush stdout
set modify_confirm [string trim [gets stdin]]
if {$modify_confirm ni {y Y}} {
    exit 0
}

puts "请选择修改类型:输入1修改AA_version,输入2修改BB_version:"
flush stdout
set modify_type [string trim [gets stdin]]
if {$modify_type ni {1 2}} {
    puts "输入无效,退出修改"
    exit 1
}

puts "请输入新的版本号:"
flush stdout
set new_version [string trim [gets stdin]]

# 更新数组中的版本值
if {$modify_type == 1} {
    lset version_map($target_process) 0 $new_version
} else {
    lset version_map($target_process) 1 $new_version
}

# 将更新后的内容写回原文件,保留原有格式对齐
set fp [open "tool_version" w]
puts $fp $header
foreach p [array names version_map] {
    set aa [lindex $version_map($p) 0]
    set bb [lindex $version_map($p) 1]
    puts $fp [format "   %-6s %-18s %s" $p $aa $bb]
}
close $fp

puts "版本信息已更新成功!"

使用说明

  • 运行脚本:tclsh get_tool_version.tcl
  • 按照提示输入工艺名称即可查询对应AA、BB版本
  • 确认修改后按照提示选择修改的版本类型,输入新版本号即可自动更新文件

注意:如果你的版本存储文件名不是tool_version,请修改脚本中open命令对应的文件名参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:09