Тут відбуваються 2 речі:
Tcl використовує [...]
як синтаксис "заміни команди" (див. Https://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm правило 7). Це як зворотні посилання в сценарії оболонки. У межах подвійних лапок виконується підміна команд.
За замовчуванням узгодження шаблону для expect
команди - це "glob" шаблони. Шаблони глобусу задокументовані тут:
https://tcl.tk/man/tcl8.6/TclCmd/string.htm#M35
Квадратні дужки спеціальні для глобальних моделей.
Отже, спочатку вам потрібно захистити квадратні дужки в межах подвійних лапок, щоб запобігти замінам команд. Тоді, якщо ви хочете ставитися до них як до буквальних символів, вам потрібно знову їх уникнути.
Ось кілька речей, які ви можете зробити, щоб зменшити кількість нахилів:
використовувати неінтерполюючі лапки: у Tcl це {braces}
не так "quotes"
.
виберіть інший тип шаблону: якщо це буквальний рядок, який ви хочете зіставити, скористайтеся -ex
опцією, щоб сказати, що хочете "точного" відповідності.
Таким чином, ви хочете цього:
expect -ex {blah blah [herp derp]}
expect
використовує Tcl для своїх сценаріїв, тому я б здогадався, що ті самі символи потребують втечі, як у звичайному Tcl.