Timeout não funciona com a bandeira '-re' em esperar roteiro
Pergunta
Eu estou tentando obter um esperar script para o trabalho, e quando eu uso a bandeira -re (para invocar análise da expressão comum), o 'timeout' palavra-chave parece não funcionam mais. Quando o seguinte script é executado, eu recebo a mensagem 'expirou na etapa 1', então 'iniciar a etapa 2' e depois vezes fora, mas não imprime a 'expirou no passo 2' Eu só obter um novo aviso.
Idéias?
#!/usr/bin/expect --
spawn $env(SHELL)
match_max 100000
set timeout 2
send "echo This will print timed out\r"
expect {
timeout { puts "timed out at step 1" }
"foo " { puts "it said foo at step 1"}
}
puts "Starting test two\r"
send "echo This will not print timed out\r"
expect -re {
timeout { puts "timed out at step 2" ; exit }
"foo " { puts "it said foo at step 2"}
}
Solução
Figured it out:
expect {
timeout { puts "timed out at step 2" ; exit }
-re "foo " { puts "it said foo at step 2"}
}
Outras dicas
Sim, a bandeira "-re" como aparece na sua pergunta será aplicada a cada padrão no comando esperar. Assim, o padrão "timeout" torna-se "tempo limite -re", perdendo a sua especialidade.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow