尝试创建一个宏程序,期望帮助我管理我的cisco设备>
我想保留所有本机cisco功能,例如tab完成ETC。
最初我想输入"!...!"我的宏在刘海里面,我的代码看起来像这样:
interact {
-re "!(.+)!" { #find correct macro }
}
但是使用这种方法,没有对用户的反馈。如果他们拼错会发生什么?等等他们无法看到他们对退格的更正。
然后我开始考虑捕捉每个角色按下并构建一个字符串interact {
#book says backspace character
"\b" {
set command [lreplace $command end end]
}
#detect return, sending command
-re "\r" {
set command [join $command ""]
if [regexp "^!" $command] {
#send ctrl+u to erase line sent
send "\025"
findMacro $command
}
set command ""
send "\r"
}
#send tab for tab completion
"\t" { send "\t" }
-re "(.)" {
send $interact_out(1,string)
lappend command $interact_out(1,string)
}
}
但我不能期待"退格。我尝试过0x08 ..等等什么都没有用。最后,我甚至不确定这是怎么回事,因为用户可以按下许多其他按钮并弄乱我的字符串。
我认为,真正的解决方案是等到" \ r"按下,然后在该行上运行正则表达式。但我不知道该怎么做。