首页 > 解决方案 > 在 Tcl 中打开文件,里面有变量

问题描述

我想打开一个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
}

问题是“打开”命令似乎找不到PATHFILE变量,我收到此错误:

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

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

标签: shellscriptingtcltclsh

解决方案


是的,您可以使用TCL subst 命令来评估 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
}

推荐阅读