2013-10-15 51 views
0

我想在Tcl提示符下采集文件後進行交互。 即Tcl在獲取文件後進行交互.tcl

] $ tclsh的myCode.tcl

//執行我的代碼

%//內進入myCode.tcl互動模式

+0

請看[這個問題](這是問題)(http://stackoverflow.com/questions/19290982/tcl-expect-interact-command-echos-previous-output-from-spawned-rlwrap-process/19379047#19379047) - 這是一個副本。 –

+0

@JohannesKuhn你究竟在說什麼?那個是關於與下級進程交互的,而這是關於與當前解釋器交互的。 –

+0

問題是一樣的:「我如何在interp中執行一些東西,併爲用戶提供交互式shell?」。否則,[tag:expect]標記無助於說服我。 ([XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378)) –

回答

1

這樣做的最簡單的方法是使用來自TclX extensioncommandloop命令。

package require Tclx 

#... define things and run things... 

# Let the user issue commands 
commandloop 

上面鏈接的維基頁面討論瞭如何在不使用TclX的情況下做到這一點。

0

恐怕我可能讀得太少,或者過度簡化它,但是...不是你需要interact命令嗎?

如果你想的Tcl /期望做什麼,然後放棄控制權返回給用戶,請查看下面的手冊頁鏈接的交互命令:

http://www.tcl.tk/man/expect5.31/expect.1.html

+0

交互拋出一個錯誤說:不能與自我設置的spawn_id進行交互以產生進程 – Ashwin

+0

嗯...所以我想你不會產生另一個過程和使用期望,然後呢?如果是這樣,那麼交互命令將是沒用的。 對不起,我認爲你在Tcl中使用了Expect。 – James

0

如果你寧願做它在沒有任何外部軟件包的純tcl中,tclsh提示符的最簡單實現確實非常簡單。只要把這個在myCode.tcl末:

fileevent stdin readable { 
    puts [eval [gets stdin]] 
} 

vwait forever 

,你甚至可以實現這個作爲源的其他Tcl腳本一個獨立的程序。

當然,上面的示例代碼非常簡單,它甚至不會打印提示或處理諸如多行命令之類的事情,但它是您修改和定製的好起點。