是否可以从tclsh内部运行一些交互式shell?显然,从bash中运行交互式shell(如bash或tclsh)很容易,但我还没有找到一种方法来反转。
如果我跑步" exec tclsh"或者" exec bash"从tclsh里面我没有得到提示,直到我输入"退出"并按Enter键,或者我使用" ctrl-C"这会杀死父母tclsh。
如果可能的话,我宁愿不使用外部包。
答案 0 :(得分:3)
如果您不想将值(退出代码除外)传递回调用的Tcl代码,您可以通过重定向来轻松完成标准通道,以便Tcl不会捕获它们:
exec tclsh <@stdin >@stdout 2>@stderr
这几乎适用于任何子流程(我只是使用vi
进行了测试)并且如果tclsh决定尝试运行子流程,那么它在交互模式下实际上是神奇地为你做的。
如果你想做一些比这更复杂的事情,你可能需要考虑使用Expect,因为这里有一长串棘手的问题。