如何从 info globals 命令输出所有变量的值列表?

use*_*185 4 tcl

我正在尝试编写一小段代码来列出 info globals 命令中包含的所有变量及其值。我已经尝试了几次替换迭代,但无法让 Tcl 将变量名视为变量,并返回其值。以下是我开始的内容:

set fileid [open "c:/tcl variables.txt" w+]
foreach {x}  [lsort [info globals]]  {
    set y $x
    puts $fileid "$x  $y   "
}
Run Code Online (Sandbox Code Playgroud)

我可以得到

DEG2RAD DEG2RAD   
PI PI   
RAD2DEG RAD2DEG   
.....

或者

DEG2RAD $DEG2RAD   
价格$PI   
RAD2DEG $RAD2DEG   
.....

但我需要的是

DEG2RAD 0.017453292519943295   
PI 3.1415926535897931   
RAD2DEG 57.295779513082323   
....   

小智 6

我认为您正在寻找 subst 命令:

set fileid [open "c:/tcl variables.txt" w+] 
foreach {x} [lsort [info globals]] {
  puts $fileid "$x [subst $$x] " 
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以利用 set 返回正在设置的值这一事实:

set fileid [open "c:/tcl variables.txt" w+] 
foreach {x} [lsort [info globals]] {
  puts $fileid "$x [set $x] " 
}
Run Code Online (Sandbox Code Playgroud)