我无法让它工作,也不知道为什么。我有一行在行尾的数字之间有空格。我需要 Expect 匹配这一行并将数字和空格放入捕获组,我需要稍后在我的脚本中访问该捕获组。
示例行是:这是行 2 4 5 6
我的期望 -re 声明:期望 -re {^this\sis\sa\sline((\s\d)+$)}
然后我尝试使用 $expect_out(1,string) 访问捕获组
如果我检查http://gskinner.com/RegExr/它说匹配组 1 是“2 4 5 6”,所以我很确定模式匹配正确,我希望在 $ 中看到“2 4 5 6”期望输出(1,字符串),对吗?
但是,当我运行我的期望脚本时,我看到:
expect: does " \u001b[Js\u001b[Jt\u001b[Jr\u001b[Je\u001b[Ja\u001b[Jm\u001b[Js\u001b[J\r\n\u001b[H\u001b[J\r\n\r\n\r\n\r\this is a line 2 4 5 6\r\n\r\nSelect which option you would like to change\r\nusing the index number: " (spawn_id exp5) match regular expression "^this\sis\sa\sline((\s\d)+$)"? Gate "this?is?a?line*"? gate=yes re=no
expect: timed out
can't read "expect_out(1,string)": no such element in array
while executing
"set streams $expect_out(1,string)"
(file "check-config" line 35)
如何将“2 4 5 6”(或“2 4 5 6”)放入一个变量中,以便稍后在我的期望脚本中使用?
另外,当我引起你的注意时,这是什么Gate=Yes re=No
意思?我假设 re=No 意味着正则表达式不匹配,但是Gate
在 Expect 的世界里是什么?