我正在尝试在TCL中编写脚本,
我在行中遇到错误:![eof $logfile_fd]
错误是:invalid command name "!0"
可能导致此问题的原因,我该如何解决?
if {[file exists $logfile] != 1} {
puts "Error existence of $logfile"
return -1
}
if {[catch {set logfile_fd [open "$logfile" r]} err]} {
puts "Error opening \"$logfile\" $err"
return -1
}
seek $logfile_fd 0
![eof $logfile_fd]
我尝试使用其他解决方案:
while {[gets $logfile_fd line] >= 0} {
...do something with $line...
}
但我还有一个错误:
list element in quotes followed by ")\nindexRecordsRead:" instead of space
虽然
)\ nindexRecordsRead:
是$logfile_fd
里面的一些文字......我认为TCL会尝试执行它或者某些东西......它可以正常运行,直到这一行......
谢谢!
答案 0 :(得分:2)
我不确定你要做什么。 eof正在测试文件结束条件 - 使用它“裸”就像没有做任何事情。 Tcl正在将[eof $ logfile_fd]评估为0,然后尝试执行命令!0,该命令不存在。
如果您有以下内容,它确实有效:
if {![eof $logfile_fd]} {
//do something
}
或者,如果您想稍后存储结果,可以执行以下操作:
set isEndOfFile [expr {![eof $logfile_fd]}]
但是,像你一样执行,我不知道你可能想要在不使用返回值的情况下获得任何副作用(除了在文件描述符无效时抛出错误)。
答案 1 :(得分:0)
在使用$line
set bugfree_line [regexp -all -inline {\S+} $line]