You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将grep输出通过管道传入Tcl标准输入?

解决Tcl脚本读取管道全量输出的问题

当然可以通过在gets stdin外添加while循环解决这个问题,你的原脚本只执行了一次gets stdin,所以只能读取grep输出的第一行。

修改后的lint.tcl脚本可以这样写:

#! /usr/bin/tclsh
set a [list]
while {[gets stdin line] >= 0} {
    lappend a $line
}
puts [join $a \n]

说明

  • while {[gets stdin line] >= 0}:gets命令会从标准输入读取一行到变量line,返回读取到的字符数;当到达输入末尾(EOF)时返回-1,循环终止。
  • 循环内每次读取一行就追加到列表a中,最后用join拼接并输出所有行。

如果你不需要收集所有行,只是想逐行处理或直接输出,也可以简化成:

#! /usr/bin/tclsh
while {[gets stdin line] >= 0} {
    puts $line
}

这样就能完整读取并输出grep通过管道传递的所有内容了。

内容的提问来源于stack exchange,提问作者kil47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:07:32