这是我的名单
set session_list [list ../../TIMING_ANALYSIS_CRPR/FUNC_ss28_0.85V_0.95V_0.85V_125C_RCmax/reports.15_03_10-22/SAVED_SESSION
../../TIMING_ANALYSIS_CRPR/FUNC_ff28_0.85V_0.95V_0.85V_m40C_Cmin/reports.15_03_10-22/SAVED_SESSION]
foreach j $session_list {
set x [string trimleft $j "../../TIMING_ANALYSIS_CRPR/ "]
}
foreach item $x {
puts "create_scenario -name $item "
}
所以我想要的是我的输出列表如下:
create_scenario -name FUNC_ss28_0.85V_0.95V_0.85V_125C_RCmax/reports.15_03_10-22/SAVED_SESSION
create_scenario -name FUNC_ff28_0.85V_0.95V_0.85V_m40C_Cmin/reports.15_03_10-22/SAVED_SESSION
在最上面的代码中,它不会读取第一个foreach命令,也不会显示整个列表
答案 0 :(得分:1)
您在每个循环中设置x
的值,这将导致x
值被覆盖。
您必须使用lappend
命令
foreach j $session_list {
lappend x [string trimleft $j "../../TIMING_ANALYSIS_CRPR/ "]
}
foreach item $x {
puts "create_scenario -name $item "
}
输出
create_scenario -name FUNC_ss28_0.85V_0.95V_0.85V_125C_RCmax/reports.15_03_10-22/SAVED_SESSION
create_scenario -name FUNC_ff28_0.85V_0.95V_0.85V_m40C_Cmin/reports.15_03_10-22/SAVED_SESSION
参考:lappend
答案 1 :(得分:0)
[string trimleft]
没有按照您的想法行事。这一行:
string trimleft $j "../../TIMING_ANALYSIS_CRPR/ "
基本上意味着:删除字符.
和/
以及T
和I
以及M
和N
以及G
_
和A
以及N
和L
以及Y
和S
以及C
和R
以及{ {1}}和(单个空格)构成字符串的左侧。
你想要的是regsub:
P