字符串映射适用于文字,但不适用于变量

时间:2018-11-23 14:36:34

标签: tcl

这是我正在运行的脚本

set input_file [ open $ORIGINAL_TESTS_FILE r ];
set output_file  [ open $TESTS_FILE w ];    

set CLASS_NAME "RandTest";
set NEW_CLASS_NAME "JuanDeLosPalotes";

while { [gets $input_file line] >= 0 } {
   #echo $line
   # Replacing string
   set line [ string map { "RandTest" "JuanDeLosPalotes" } $line ];
   #echo $line
   puts $output_file $line
}
close $input_file
close $output_file

这将读取一个文本文件,并在找到它的任何地方用JuanDeLosPalotes替换RandTest。

但是,如果我替换此行

set line [ string map { "RandTest" "JuanDeLosPalotes" } $line ];

此行

set line [ string map { $CLASS_NAME $NEW_CLASS_NAME } $line ];

它不起作用(行保持不变)。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

解决了!!

大括号可防止替换。所以我需要使用引号。

set line [ string map "$CLASS_NAME $NEW_CLASS_NAME" $line ];

我认为有人需要它。

相关问题