对tclsh使用内联命令

时间:2017-05-18 20:37:11

标签: tcl

是否有像tclsh的内联命令这样的东西?

赞:tclsh -e "set a 7 ; puts $a"

当然我尝试了以上内容并且无效。但是你明白了吗?

谢谢, 格特

3 个答案:

答案 0 :(得分:2)

使用Expect,您可以实现此目标。

expect -c 'set a 10; puts $a'

-c标志提供了一种执行命令行上指定的命令的方法 而不是在脚本中。请注意,-c的整个参数都是引用的 单引号。这告诉shell不要执行任何变量扩展。

{1}}标志也可用于在脚本获得控制权之前执行命令。例如,您可以通过从shell调用Expect将变量debug设置为1:

-c

在脚本中,您可以检查此变量的值:

expect -c 'set debug 1' myscript.exp

答案 1 :(得分:0)

标准tclsh没有。你可以制作一个小脚本来做到这一点:

set argv [lassign $argv theUserScript]
eval $theUserScript

调用docmd.tcl并按照以下方式运行:

tclsh docmd.tcl 'puts "Hi from Tcl"; after 1000; puts "Bye from Tcl"'

它甚至正确处理参数(和stdin / stdout):

tclsh docmd.tcl 'foreach v $argv {puts [incr i]:$v}' abc def "ghi jkl" m123

您可能希望在传入的任何脚本周围使用单引号。

答案 2 :(得分:0)

我只用简单的echo命令管道到TCL解释器。

echo 'set a "Hello TCL!" ; puts $a ; exit' | tclsh