【问题标题】:TCL write and read only one valueTCL只写和读一个值
【发布时间】:2014-10-23 13:51:27
【问题描述】:

大家好,我正在将 TCL (IVR/TCL) 用于 Cisco 语音网关。我需要一个文本文件,里面只有一个 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"
}

但是真的有必要因为我只读一行吗? 我怎么能写文件...??

【问题讨论】:

    标签: tcl


    【解决方案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
    

    这就是真正需要的(当然,除了将片段转换为整个程序的其余逻辑),尽管您也可以执行诸如还写更改日期之类的操作。 (当然,这也将保留在文件的元数据中……但这是一个插图,好吗?)

    set timestamp [clock format [clock seconds]]
    if {$closed} {
        puts $fd "closed - $timestamp"
    } else {
        puts $fd "open - $timestamp"
    }
    

    等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 2020-11-09
      • 2019-09-17
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多