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"}
}
Foi útil?

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
scroll top