Используете ли вы эти двойные черты, чтобы аргумент send
интерпретировался как строка?Если это так, я думаю, вам нужны пробелы после --
и перед строкой:
expect {
-re "pattern1" {send -- "str1 \r"}
-re "pattern2" {send -- "str2 \r"}
-re "pattern3" {send -- "str3 \r"}
}
без пробела, который, по-видимому, хочет обрабатывать все после первой -
как один большой флаг.
Чтобы ответить на ваш вопрос, да, похоже, что работающая отправная точка делает то, о чем вы просите: она будет наблюдать вывод из testscript
и ждать, пока совпадет одно из регулярных выражений, или пока не истечет время ожидания.истекает (поскольку вы не устанавливаете период ожидания, по умолчанию он будет равен 10 секундам) или пока не будет получен EOF.Если одно из регулярных выражений совпадает, оно перейдет в раздел кода, который следует за соответствующим выражением.
Будьте осторожны с синтаксисом регулярных выражений TCL, если вы привыкли к PCRE или Vim ...