在 Tcl 中打开包含变量的文件

Open file in Tcl with variables inside

我想打开名为 filelist.txt 的文件,其中仅包含字符串 ${PATHFILE}/test.txt,读取该行并打开文件 test.txt。文件 test.txt 存在于文件夹 ~/testfile.
中 考虑这个示例代码:

#!/usr/bin/env tclsh

set PATHFILE "~/testfile"

set fp [open "filelist.txt" r]
set lines [split [read $fp] "\n"]
close $fp   

foreach line $lines {
    set fp1 [open $line r]
    close $fp1
}

问题是 "open" 命令似乎找不到 PATHFILE 变量,我得到这个错误:

couldn't open "${PATHFILE}/test.txt": no such file or directory

如果我尝试用 set fp1 [open "${PATHFILE}/test.txt" r] 打开文件,我没有任何错误。

是的,您可以使用 TCL subst command 来评估 PATHFILE 变量。请注意,波浪号 ~ 可能仍有问题 - 使用完整路径名可能更好。

#!/usr/bin/env tclsh

set PATHFILE "~/testfile"

set fp [open "filelist.txt" r]
set lines [split [read $fp] "\n"]
close $fp   

foreach line $lines {
    set fp1 [open [subst $line] r]
    close $fp1
}