如何运行交互式shell,例如" exec tclsh"从tclsh里面?

时间:2016-01-21 07:57:33

标签: tcl

是否可以从tclsh内部运行一些交互式shell?显然,从bash中运行交互式shell(如bash或tclsh)很容易,但我还没有找到一种方法来反转。

如果我跑步" exec tclsh"或者" exec bash"从tclsh里面我没有得到提示,直到我输入"退出"并按Enter键,或者我使用" ctrl-C"这会杀死父母tclsh。

如果可能的话,我宁愿不使用外部包。

1 个答案:

答案 0 :(得分:3)

如果您不想将值(退出代码除外)传递回调用的Tcl代码,您可以通过重定向来轻松完成标准通道,以便Tcl不会捕获它们:

exec tclsh <@stdin >@stdout 2>@stderr

这几乎适用于任何子流程(我只是使用vi进行了测试)并且如果tclsh决定尝试运行子流程,那么它在交互模式下实际上是神奇地为你做的。

如果你想做一些比这更复杂的事情,你可能需要考虑使用Expect,因为这里有一长串棘手的问题。