1

基本上我想要做的是在shell中传递一个tcl命令。zsh最常见的管道是grep,awksed用于文本操作。

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

是否有可能实现相同的目标tcl

谢谢你。

4

2 回答 2

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]
    }
}}

如果您使用 in 调用脚本tclhelper.tcl并定义 shell 别名:

alias tcl='tclsh tclhelper.tcl'

然后你就可以做到:

tcl -e "puts [info patchlevel]"

并看到一切正常。

于 2013-08-16T12:35:32.123 回答
1

可以通过将您的 tcl 一个衬管连接到tclshwith来完成|,例如:

echo 'puts "do_something"' | tclsh
于 2013-08-16T12:31:44.513 回答