如何从TCL代码打开新终端,执行某些操作(例如ls -l),获取这些操作的结果并关闭该终端?
exec命令是否打开一个新终端并且在终端中调用所有操作,或者当我用exec调用例如“cd ..”时,该命令与linux终端和linux命令无关,那些是只是与linux标准命令同名的纯tcl命令?
答案 0 :(得分:2)
听起来像你想要Expect。
答案 1 :(得分:2)
您传递给exec
的任何命令都将被发送到系统执行。 exec
没有打开终端窗口来执行此操作:它不需要打开像终端这样的GUI窗口,只是为了与底层系统进行交互。
关于示例命令的几个特定说明:
ls
或ls -l
的输出。假设您有一个奇怪但有效的文件名,如“foo \ nbar”。你最好迭代Tcl的glob
命令的结果。cd
恰好是Tcl命令。答案 2 :(得分:0)
我完成了我的任务:
set cvsUpdStr [exec $pathToCvsInYourSystem -qn upd]
它不会打开终端,但它执行任务:
cvsUpdStr
中,以后可以使用也可以将其与catch
一起使用,以了解它是否正确执行或避免错误:
if {[catch {exec $pathToCvsInYourSystem -qn upd} result]} {puts $result}