首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对tclsh使用内联命令

对tclsh使用内联命令
EN

Stack Overflow用户
提问于 2017-05-19 04:37:11
回答 3查看 662关注 0票数 1

tclsh有没有像inline命令这样的东西?

喜欢:tclsh -e "set a 7 ; puts $a"

当然,我尝试了上面的方法,但它不起作用。但你明白我的意思吗?

谢谢,格特

EN

回答 3

Stack Overflow用户

发布于 2017-05-19 12:01:08

使用Expect,您可以实现这一点。

代码语言:javascript
复制
expect -c 'set a 10; puts $a'

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

-c标志还可用于在脚本获得控制之前执行命令。例如,您可以通过从shell调用Expect将变量debug设置为1,如下所示:

代码语言:javascript
复制
expect -c 'set debug 1' myscript.exp

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

代码语言:javascript
复制
if [info exists debug] {
    puts "debugging mode: on"
else {
    set debug 0
}
票数 3
EN

Stack Overflow用户

发布于 2017-05-19 19:42:06

标准的tclsh不需要这样做,你可以写一个小脚本来实现:

代码语言:javascript
复制
set argv [lassign $argv theUserScript]
eval $theUserScript

调用该docmd.tcl并像这样运行它:

代码语言:javascript
复制
tclsh docmd.tcl 'puts "Hi from Tcl"; after 1000; puts "Bye from Tcl"'

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

代码语言:javascript
复制
tclsh docmd.tcl 'foreach v $argv {puts [incr i]:$v}' abc def "ghi jkl" m123

您可能希望在传入的任何脚本两边都使用单引号。

票数 1
EN

Stack Overflow用户

发布于 2017-05-22 21:02:32

我只使用了简单的echo命令,并通过管道连接到TCL解释器。

代码语言:javascript
复制
echo 'set a "Hello TCL!" ; puts $a ; exit' | tclsh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44057339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档