Existem 2 coisas acontecendo aqui:
-
O Tcl usa
[...]
como a sintaxe de "substituição de comandos" (Consulte link regra 7). É como backticks em um script de shell. Dentro de aspas duplas, as substituições de comandos são realizadas. -
A correspondência de padrão padrão para o comando
expect
é de padrões "glob". Padrões Glob são documentados aqui: link Os colchetes são especiais para padrões glob.
Portanto, primeiro você precisa proteger os colchetes entre aspas duplas para evitar substituições de comandos. Então, se você quiser tratá-los como caracteres literais, você precisa escapar deles novamente.
Aqui estão algumas coisas que você pode fazer para reduzir as barras invertidas:
-
use aspas não interpoladas: em Tcl que é
{braces}
não"quotes"
. -
escolha um tipo de padrão diferente: se essa for uma sequência literal à qual você deseja corresponder, use a opção
-ex
para dizer que você deseja uma correspondência "exata".
Assim, você quer isso:
expect -ex {blah blah [herp derp]}