1. spawn 的作用域,仅在当前代码块有效。
举例来说,如果在一个函数foo 中使用spawn 命令,在foo 函数之外,则无法使用send 命令往此进程发送数据,因此spawn 必须在send 的最外层。
2. 可以使用expect -re 对于命令输出进行检查
命令输出使用expect -re 匹配,然后再使用expect_out(index, string) 获取匹配的内容,其中index 表示第几个括号,从1开始计数。
注意表示数字的正则表达式是\\d
命令输出总内容 = “上一个命令的输出” + “当前的提示符”
3. 写文件时,不写入缓存,直接写到文件
如果仅使用puts $file $string,它会等到此文件被关闭后才写入,因此可以在puts 后面使用flush 命令,即flush $file,如此可以直接写入到文件。
当写入的文件需要很长时间时,此功能非常有用,可以在文件没有写完全时进行查看
4. tips
tcl 中的sleep 命令居然是after,后面的参数是毫秒,郁闷
send 命令有时会在尾部多添加一段字符串,具体原因未知,调试了快两天才发现这个问题。明明仅仅发送了576字节,但程序收到了873字节内容