如何用反斜杠写数字并避免使用unicodes符号

时间:2018-02-27 10:34:54

标签: variables tcl

我有变量,这是一个保存操作输出文件的路径。敌人的例子

set ResultPath "G:\\KSimonov\\PerGeos\\2. TCL Scripts\\Results\\"

操作后我需要从修改后的文件中导出数据并放入由变量ResultPath给出的文件夹中。我想用数字来称呼它。例如,

"G:\\KSimonov\\PerGeos\\2. TCL Scripts\\Results\\1.am"

其中.am是文件的格式。问题是,如果我把文件名放在那里,他会给出unicode符号:

echo "$ResultPath\1.am" 
G:\KSimonov\PerGeos\2. TCL Scripts\Results\.am

请问您如何避免这种情况? 我找到的方法是使用像

这样的数字的unicodes
echo "$ResultPath\u0031"
G:\KSimonov\PerGeos\2. TCL Scripts\Results\1 

3 个答案:

答案 0 :(得分:0)

您只需要引用反斜杠以避免被解释。你可以这样做:

set ResultPath "G:\\KSimonov\\PerGeos\\2. TCL Scripts\\Results\\" 

或:

set ResultPath {G:\KSimonov\PerGeos\2. TCL Scripts\Results\} 

有关详细信息,请参阅Tcl在https://www.tcl.tk/man/tcl/TclCmd/Tcl.htm

的引用和替换规则

答案 1 :(得分:0)

  

我有变量,这是一个操作输出文件的路径   被保存

确保正确构建路径,而不是将其作为裸字符串嵌入,以后需要保护:

% set ResultPath [file join G: KSimonov PerGeos {2. TCL Scripts} Results]
G:/KSimonov/PerGeos/2. TCL Scripts/Results

结帐:file joinfile split

答案 2 :(得分:0)

在调用中

echo "$ResultPath\1.am" 

反斜杠必须像文件名一样进行转义:

echo "$ResultPath\\1.am" 

即使在Windows中也没有理由在文件路径中使用反斜杠(我从来没有这样做)。只需使用

set ResultPath "G:/KSimonov/PerGeos/2. TCL Scripts/Results"

echo $ResultPath/1.am

甚至

echo [file join $ResultPath 1.am]

如果要将其打印出来并使其看起来像Windows路径:

puts [file nativename $ResultPath]
G:\KSimonov\PerGeos\2. TCL Scripts\Results

puts [file nativename [file join $ResultPath 1.am]]
G:\KSimonov\PerGeos\2. TCL Scripts\Results\1.am

在你的脚本中,反斜杠就在路上。