shell - 在 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]
我没有任何错误。
解决方案
是的,您可以使用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
}
推荐阅读
- python - 如何为日程表中的星期几名称创建动态模型?
- javascript - 数组访问时未调用 addEventListener() 方法
- python - 我的代码有效,但是如何让这段代码在确定的时间内运行?
- apache-kafka - 更改 Kafka Streams 上的键但推送到新主题时是否会发生数据重新分区?
- oauth - 如何使用 oAuth for Daemon 与 Exchange Web 服务交互,但仅限于一个邮箱
- bash - 在 if 语句 bash 中调用函数
- kubernetes - 错误:选择器与模板标签不匹配
- javascript - 如何在执行之前捕获 Echarts Toolbox 事件,如 saveAsImage
- javascript - 绑定到 html 的角度推送和拼接数组元素
- python - Python3 cx-Oracle Oracle 客户端库无法加载:Linux 上的“libclntsh.so”