大家好我正在使用TCL(IVR / TCL)用于思科语音网关..我需要一个文本文件,里面只有一个OPEN或CLOSED值...只有1个值..所以当一个电话告诉我检查业务是开放还是关闭..
然后我再向管理员发出另一个TCL来打电话并打开/关闭商务..
我已经读过你可以在写文件之前使用临时文件......这真的是必要的吗
基本上我只需要第一行并写入OPEN或CLOSED然后在另一个tcl中读取文件并读取值..
我必须要记住的是,请注意文件只有一行......并且关闭或打开值设置..
for reading I am using
set fd [open $filename]
while {[gets $fd line] >= 0} {
set data [lindex $line 0]
puts "\n Date: $data ::"
if { [expr { $data == "closed" }] } {
set closed "1"
puts "\n Date Found on the List"
}
但是真的有必要我只是读一行吗? 我怎么能写这个文件...... ??
答案 0 :(得分:0)
如果您认为感兴趣的线始终是第一个,那很容易。首先,没有必要使用循环或尝试将行分成单词; <{1}}(返回布尔值)的简单全局匹配就足够了。
string match
# Reader
set fd [open $filename]
set closed [string match "closed*" [gets $fd]]
close $fd
这就是真正需要的(当然除了将片段转换为整个程序的其余逻辑),尽管你也可以做一些事情,比如写日期更改。 (当然,这也将保存在文件的元数据中......但这只是一个例子,好吗?)
# Writer
set fd [open $filename w]
if {$closed} {
puts $fd "closed"
} else {
puts $fd "open"
}
close $fd
等等。