使用tcl在后台连续运行命令

时间:2015-03-17 09:58:30

标签: linux tcl expect

我正在使用tcl / expect来测试以太网交换机。我想每2秒和后台重复运行一些测试工具。输出可以忽略。

那就是我想做以下事情: 有一个代码块一遍又一遍地重复以下代码,直到从另一个代码块停止:

 exec { $myCommand }
 sleep $sleepDuration

$ myCommand可以是列表或字符串,更方便。 $ sleepDuration是一个数字。

在另一段代码中,我将进行正常操作,包括产生进程并与它们交谈或与现有连接进行交互。

tcl有可能吗?我在VMWare中运行Debian Linux 6。代码不需要可移植到其他平台。

我尝试使用手表,但我不知道如何执行以下操作:

exec {watch $myCommand}
switch to an already connected process
interact with it
switch to watch
send "\x03"

1 个答案:

答案 0 :(得分:2)

在最简单的情况下,命令快速运行,您使用every模式:

proc every {delay script} {
    uplevel #0 $script
    after $delay [info level 0]
}
every 2000 {exec $yourCommand $yourArgument &}

然后,只要您为Tcl事件循环提供服务,该命令将每2秒运行一次(== 2000毫秒)。