2

tclでのファイル読み込みについての質問です。書き込むバッファ ストリームを開いていますが、それを参照するファイル ハンドラは 1 つしかありません。このバッファを 1 行ずつ読み込んでいるときに、ある条件でバッファのすべてのコンテンツを格納する必要があります。これを達成する方法を教えてください。したがって、要件を説明するためにサンプルコードを貼り付けています。

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 に答える