我想从另一个tcl脚本(script1)执行一个tcl脚本(比如script2)。 我可以使用
来做到这一点exec expect -f script2
但我无法与script2交互。 如果script2正在等待任何用户输入,我无法通过它。 有没有办法在tcl中实现这一点。
答案 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]
然而,在这种情况下,你负责所有互动,你必须小心确保你不会阻止双方等待对方做某事。超出此简单摘要的详细信息对于相关脚本非常具体。