如何运行交互式shell,例如;执行tclsh";从tclsh内部?

如何运行交互式shell,例如;执行tclsh";从tclsh内部?,tcl,Tcl,可以从tclsh内部运行一些交互式shell吗?显然,从bash内部运行交互式shell(如bash或tclsh)很容易,但我还没有找到一种方法来实现相反的操作 如果我从tclsh内部运行“exec tclsh”或“exec bash”,在键入“exit”并按enter键之前,我不会得到提示,或者使用“ctrl-C”终止父tclsh 如果可能的话,我宁愿不使用外部包。如果您不想将值(退出代码除外)传递回调用的Tcl代码,您可以通过重定向标准通道,使Tcl不会捕获它们,从而非常轻松地执行此操作:

可以从tclsh内部运行一些交互式shell吗?显然,从bash内部运行交互式shell(如bash或tclsh)很容易,但我还没有找到一种方法来实现相反的操作

如果我从tclsh内部运行“exec tclsh”或“exec bash”,在键入“exit”并按enter键之前,我不会得到提示,或者使用“ctrl-C”终止父tclsh

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

如果您不想将值(退出代码除外)传递回调用的Tcl代码,您可以通过重定向标准通道,使Tcl不会捕获它们,从而非常轻松地执行此操作:

exec tclsh <@stdin >@stdout 2>@stderr
exec tclsh@stdout 2>@stderr
这几乎适用于任何子流程(我刚刚用
vi
对其进行了测试),如果tclsh决定尝试运行子流程,它实际上会在交互模式下神奇地为您做这件事

如果您想做任何比这更复杂的事情,您可能需要研究使用Expect,否则会有一长串棘手的问题。

如果您不想传递值(退出代码除外)回到调用Tcl代码,通过重定向标准通道,使Tcl无法捕获它们,您可以非常轻松地执行此操作:

exec tclsh <@stdin >@stdout 2>@stderr
exec tclsh@stdout 2>@stderr
这几乎适用于任何子流程(我刚刚用
vi
对其进行了测试),如果tclsh决定尝试运行子流程,它实际上会在交互模式下神奇地为您做这件事

如果你想做比这更复杂的事情,你可能需要研究一下使用Expect,否则会有一长串棘手的问题。

你比我强:)+1你比我强:)+1