将所有数据保存到变量tcl中

时间:2016-04-01 09:00:39

标签: linux unix while-loop tcl

我有一个代码,我想用它来打开日志文件,提取内容并将其保存到变量中,这样我以后就可以从变量中提取数据。我怎么做?到目前为止,代码仅将日志文件的最后数据保存到变量中。我认为while循环逐行抓取数据并且变量逐个存储它并在前进时覆盖先前的数据,如何更改代码以便在代码进行时存储所有数据?

set fp [open "filename.log" r]
while { [gets $fp data] >= 0 } { 
    set written $data
}
close $fp 
puts $written

请帮助

3 个答案:

答案 0 :(得分:4)

您也可以使用read而不是whilegets

set fp [open "filename.log" r]
set written [read $fp]
close $fp 
puts $written

答案 1 :(得分:1)

您可以使用append命令进行此操作:

set written ""
set fp [open "filename.log" r]
while { [gets $fp data] >= 0 } { 
    # append last data read
    append written $data
    # add some line feed for readability (may not be necessary)
    append written "\n"
}
close $fp 
puts $written

答案 2 :(得分:1)

在得到@purplepsycho和@Jerry的好答案之后,您可以使用fileutil::cat函数,即使openclose不需要文件描述符和语法,

package require fileutil
set var [fileutil::cat "filename.log"]
puts $var