tclsh有没有像inline命令这样的东西?
喜欢:tclsh -e "set a 7 ; puts $a"
当然,我尝试了上面的方法,但它不起作用。但你明白我的意思吗?
谢谢,格特
发布于 2017-05-19 12:01:08
使用Expect,您可以实现这一点。
expect -c 'set a 10; puts $a'-c标志提供了一种执行在命令行而不是在脚本中指定的命令的方法。请注意,-c的整个参数都是使用单引号用引用的。这告诉shell不要执行任何变量扩展。
-c标志还可用于在脚本获得控制之前执行命令。例如,您可以通过从shell调用Expect将变量debug设置为1,如下所示:
expect -c 'set debug 1' myscript.exp在脚本中,您可以检查此变量的值:
if [info exists debug] {
puts "debugging mode: on"
else {
set debug 0
}发布于 2017-05-19 19:42:06
标准的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您可能希望在传入的任何脚本两边都使用单引号。
发布于 2017-05-22 21:02:32
我只使用了简单的echo命令,并通过管道连接到TCL解释器。
echo 'set a "Hello TCL!" ; puts $a ; exit' | tclshhttps://stackoverflow.com/questions/44057339
复制相似问题