Tcl:测试路径是相对路径还是绝对路径
Tcl: Test whether path is relative or absolute
Tcl 中是否有一种很好的方法来测试给定路径是相对路径还是绝对路径?当然我可以明确地做到这一点:
- 如果以 / 开头,则为绝对值。
- 如果我在 Windows 并且它以 \ 或 X:\ 开头(对于某些字母 X),它是绝对的。
- 如果我在 Mac 上并且......
等等
不过,在我看来,这就像重新发明轮子一样。这个问题似乎很常见(例如,"file normalize" 做到这一点),我怀疑 Tcl 库中一定有一些东西已经在做这件事了...
使用file pathtype $path
。它 returns absolute
、relative
或 volumerelative
.
这是一种方法。请注意,此解决方案不适用于符号链接:
# Returns 1 (true) if path is absolute, 0 otherwise. Does not work
# with symbolic links
proc isAbsolute {path} {
set absolutePath [file normalize $path]
return [expr {$path eq $absolutePath}]
}
Tcl 中是否有一种很好的方法来测试给定路径是相对路径还是绝对路径?当然我可以明确地做到这一点:
- 如果以 / 开头,则为绝对值。
- 如果我在 Windows 并且它以 \ 或 X:\ 开头(对于某些字母 X),它是绝对的。
- 如果我在 Mac 上并且...... 等等
不过,在我看来,这就像重新发明轮子一样。这个问题似乎很常见(例如,"file normalize" 做到这一点),我怀疑 Tcl 库中一定有一些东西已经在做这件事了...
使用file pathtype $path
。它 returns absolute
、relative
或 volumerelative
.
这是一种方法。请注意,此解决方案不适用于符号链接:
# Returns 1 (true) if path is absolute, 0 otherwise. Does not work
# with symbolic links
proc isAbsolute {path} {
set absolutePath [file normalize $path]
return [expr {$path eq $absolutePath}]
}