Odpowiedzi:
Działają się tutaj 2 rzeczy:
Tcl używa [...]
jako składni „podstawiania poleceń” (patrz reguła 7 https://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm ). To jest jak backticks w skrypcie powłoki. W obrębie podwójnych cudzysłowów wykonywane są podstawienia poleceń.
Domyślnym dopasowaniem wzorca dla expect
polecenia są wzorce „glob”. Wzory
globu są udokumentowane tutaj:
https://tcl.tk/man/tcl8.6/TclCmd/string.htm#M35 Nawiasy kwadratowe są specjalne dla wzorów globów.
Najpierw musisz chronić nawiasy kwadratowe w podwójnych cudzysłowach, aby zapobiec zamianie poleceń. Następnie, jeśli chcesz traktować je jako dosłowne znaki, musisz uciec od nich ponownie.
Oto kilka rzeczy, które możesz zrobić, aby zmniejszyć odwrotne ukośniki:
używaj cudzysłowów bez interpolacji: w Tcl {braces}
nie jest "quotes"
.
wybierz inny typ wzoru: jeśli jest to dosłowny ciąg, który chcesz dopasować, użyj -ex
opcji, aby powiedzieć, że chcesz „dokładne” dopasowanie.
Dlatego chcesz tego:
expect -ex {blah blah [herp derp]}
expect
używa Tcl do swoich skryptów, więc zgaduję, że te same znaki potrzebują ucieczki, jak w zwykłym Tcl.