Здесь происходит 2 вещи:
Tcl использует в
[...]
качестве синтаксиса «подстановка команд» (см. Https://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm rule 7). Это похоже на обратную галочку в сценарии оболочки. В двойных кавычках выполняются подстановки команд.Соответствие шаблону по умолчанию для
expect
команды - это «глобальные» шаблоны. Шаблоны глобусов описаны здесь: https://tcl.tk/man/tcl8.6/TclCmd/string.htm#M35 Квадратные скобки специально предназначены для шаблонов глобусов.
Итак, сначала вам нужно защитить квадратные скобки в двойных кавычках, чтобы предотвратить подстановку команд. Затем, если вы хотите относиться к ним как к буквальным символам, вам нужно снова их избежать.
Вот несколько вещей, которые вы можете сделать, чтобы уменьшить обратную косую черту:
используйте не интерполирующие кавычки: в Tcl это
не так
"quotes"
.выберите другой тип шаблона: если это буквальная строка, которую вы хотите сопоставить, используйте
-ex
опцию, чтобы сказать, что вы хотите «точное» соответствие.
Таким образом, вы хотите это:
expect -ex