如何在bash或zsh shell中管道tcl命令?

时间:2013-08-16 11:11:25

标签: shell tcl pipe

基本上我要做的是在tcl shell中管道zsh命令。对于文本操作,最常见的管道是grepawksed

perlruby-e选项,允许直接从shell执行语句而无需在文件上编写脚本。

是否可以在tcl中实现相同的目标?

谢谢。

2 个答案:

答案 0 :(得分:3)

tclsh没有-e之类的内容;它是围绕Tcl库的一个非常简单的包装器。

您可以使用以下脚本模拟

apply {{} {
    global argv0 argv argc
    if {[lindex $argv 0] eq "-e"} {
        set script [lindex $argv 1]
        set argv [lrange $argv 2 end]
        incr argc -2
        uplevel #0 $script
    } else {
        set argv0 [lindex $argv 0]
        set argv [lrange $argv 1 end]
        incr argc -1
        uplevel #0 [list source $argv0]
    }
}}

如果您使用名为tclhelper.tcl的脚本创建脚本并定义shell别名:

alias tcl='tclsh tclhelper.tcl'

然后你就能做到:

tcl -e "puts [info patchlevel]"

看到事情有效。

答案 1 :(得分:1)

可以通过使用tclsh将您的tcl one liner传输到|来完成,例如:

echo 'puts "do_something"' | tclsh