2016-01-21 104 views
0

是否可以在tclsh中運行一些交互式shell?顯然,從bash內部運行交互式shell如bash或tclsh是很容易的,但我還沒有找到相反的方法。如何從tclsh內部運行交互式shell如「exec tclsh」?

如果我從tclsh內部運行「exec tclsh」或「exec bash」,直到我輸入「exit」並敲回車,或者使用殺死父tclsh的「ctrl-C」,我纔會得到提示。

如果可能,我寧願不使用外部包裝。

回答

3

只要你不想傳遞值(比出口代碼等)回調用Tcl的代碼你可以通過重定向標準渠道所以Tcl不捕捉它們這樣做很容易地:

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

這將爲幾乎所有子工作(我剛剛與vi測試過),是什麼真正的tclsh神奇地爲你所做的交互模式,如果它決定嘗試運行的子進程。

如果你想做比這更復雜的任何事情,你可能需要考慮使用Expect,否則就有很長的棘手問題。

+0

你打敗了我:) +1 – slebetman