TCL - 打开一个新终端,在打开的终端上做一些操作并关闭它

时间:2011-04-30 06:40:31

标签: linux terminal tcl

如何从TCL代码打开新终端,执行某些操作(例如ls -l),获取这些操作的结果并关闭该终端?

exec命令是否打开一个新终端并且在终端中调用所有操作,或者当我用exec调用例如“cd ..”时,该命令与linux终端和linux命令无关,那些是只是与linux标准命令同名的纯tcl命令?

3 个答案:

答案 0 :(得分:2)

听起来像你想要Expect

答案 1 :(得分:2)

您传递给exec的任何命令都将被发送到系统执行。 exec没有打开终端窗口来执行此操作:它不需要打开像终端这样的GUI窗口,只是为了与底层系统进行交互。

关于示例命令的几个特定说明:

  • 不建议解析lsls -l的输出。假设您有一个奇怪但有效的文件名,如“foo \ nbar”。你最好迭代Tcl的glob命令的结果。
  • cd恰好是Tcl命令。

答案 2 :(得分:0)

我完成了我的任务:

set cvsUpdStr [exec $pathToCvsInYourSystem -qn upd]

它不会打开终端,但它执行任务:

  1. 执行命令
  2. 结果存储在cvsUpdStr中,以后可以使用
  3. 也可以将其与catch一起使用,以了解它是否正确执行或避免错误:

    if {[catch {exec $pathToCvsInYourSystem -qn upd} result]} {puts $result}