Wiem, że ciężko wsporniki [
, ]
wymaga ucieczki stosowany wewnątrz potrójne backslash expect "..."
strun, więc używam expect "blah blah \\\[herp derp\\\]"
dokładnie przekazać te znaki do expect
I / O sprawdzania, ale jakie inne znaki również wymagać ucieczce? Rura? Zdanie wtrącone? ???
2
expect
używa Tcl do swoich skryptów, więc zgaduję, że te same znaki potrzebują ucieczki, jak w zwykłym Tcl.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:
źródło