Ändert das festgelegte Timeout jede Erwartung oder nur die endgültige Erwartung?

502
mcandre

Ich lerne zum /usr/bin/expectersten Mal, den Alptraum zu automatisieren, der fink von der Quelle installiert, da dieses Skript einige Dutzend Eingabeaufforderungen enthält, die alle mit der Eingabetaste beantwortet werden können. Das Problem ist, dass ein Abschnitt des Skripts ungefähr 30 Minuten dauert, während der letzte Abschnitt ungefähr 10 Minuten dauert. Ich bin mir nicht sicher, ob set timeout 1800oder set timeout 600. Grundsätzlich möchte ich wissen, ob sich set timeoutdas Timeout für jede expect "..."Aussage oder nur das Finale auswirkt expect eof.

Ich könnte dies konservativ konfigurieren und einfach mitgehen set timeout 1800, aber ich schätze, wenn die Semantik von Expect hier ungefähr das Endergebnis ist, ist es am besten, dort eine spezifischere Wartezeit zu wählen.

Ich weiß, dass ich auch set timeout -1mitmachen könnte, aber dieses Skript soll von CI-Servern ausgeführt werden, und ich möchte nicht, dass diese auf unbestimmte Zeit stehen bleiben.

0

1 Antwort auf die Frage

2
meuh

set timeoutbeeinflusst das Timeout für jede expectAnweisung. Sie können jedoch einen explizit überschreibenden Wert für jeden von ihnen angeben:

expect -timeout 100 ... 

Beachten Sie auch, dass set timeoutinnerhalb einer procFunktion diese Funktion nur für den lokalen Bereich dieser Funktion festgelegt wird und sich nicht auf den globalen Timeout-Wert auswirkt.