是否有像tclsh的内联命令这样的东西?
赞:tclsh -e "set a 7 ; puts $a"
当然我尝试了以上内容并且无效。但是你明白了吗?
谢谢, 格特
答案 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