TCL:文件规范化给出了意外的输出

时间:2017-07-29 13:36:54

标签: tcl

我有以下代码行:

file normalize [string map {\\ /} $file]

字符串映射操作是使该行适用于包含反斜杠而不是前向的路径(如Windows中的情况)

对于$ file的某些值(让我们说" / path / to / my / file")我的输出类似于:

/path/to/"/path/to/my/file/"

这并非适用于所有路径,但我无法弄清楚导致它的原因。路径中没有符号链接。 有没有我做错的事情,或者我可以试试文件规范化的替代方案吗?

我的tcl版本是8.5

更新: 在进一步调查中,我发现string map没有任何区别。 file normalize本身的输出随附了所需文本之前的额外文本。此外,额外的文本似乎来自之前的代码运行。

更新2:这是因为file normalize

输入中的引号

1 个答案:

答案 0 :(得分:1)

路径很可能是反斜杠,不应该有它们。

% file normalize {"/path/to/some/file"}
/path/to/"/path/to/some/file"
% file normalize \"/path/to/some/file\"
/path/to/"/path/to/some/file"

也许某些路径名处理代码由于某种原因转义了特殊字符,并使路径处于错位状态。

我会尝试保持路径名原始,当需要更改显示或其他处理时,请先复制它。