2

这是一个关于 tcl 文件读取的问题。我正在打开一个要写入的缓冲区流,并且我只有一个文件处理程序引用它现在在逐行读取此缓冲区时,在某些情况下我必须放置缓冲区的所有内容,请建议我如何实现这一点。所以我只是粘贴一个示例代码来解释我的要求。

catch { open "| grep" r } pipe
while { [gets $pipe line] } {
      if { some_condition } {
          ## display all the content of $pipe as string
      }
}

谢谢鲁奇

4

1 回答 1

4

要从管道读取直到它被另一端关闭,只需使用read $pipe. 然后,您可以这样做:

set pipe [open "| grep" r]
while { [gets $pipe line] >= 0 } {  # zero is an empty line...
    if { some_condition } {
        puts [read $pipe]
        ### Or, to include the current line:
        # puts $line\n[read $pipe]
    }
}

如果您想要管道输出中早期的任何内容,则必须将其保存在变量中。

于 2012-09-14T12:35:42.900 回答