有没有办法将输入传递给从tcl中的另一个脚本调用的tcl脚本

时间:2014-04-07 08:23:01

标签: tcl expect

我想从另一个tcl脚本(script1)执行一个tcl脚本(比如script2)。 我可以使用

来做到这一点
exec expect -f script2

但我无法与script2交互。 如果script2正在等待任何用户输入,我无法通过它。 有没有办法在tcl中实现这一点。

1 个答案:

答案 0 :(得分:0)

要将用户挂钩到劣质流程,您需要一些重定向:

exec expect -f script2 <@stdin >@stdout 2>@stderr

请注意,这极大地限制了外部脚本影响内部脚本的能力,但这是可预测的(您将该控件提供给用户)。如果你想要外部脚本进行交互,你必须使用:

set mypipe [open |[list expect -f script2] "r+"]
fconfigure $mypipe -buffering none
# Now you can do:
#     puts -nonewline $mypipe "abc"
#     set charResponse [read $mypipe 1]

然而,在这种情况下,你负责所有互动,你必须小心确保你不会阻止双方等待对方做某事。超出此简单摘要的详细信息对于相关脚本非常具体。