ожидаемая ошибка скрипта: не работает spawn id exp4 - PullRequest
0 голосов
/ 07 октября 2019

У меня есть скрипт, который работает хорошо, как я ожидаю, но в конце, когда он завершается, выдает эту ошибку:

interact: spawn id exp4 not open
    while executing
"interact"
    (file "./pippo.sh" line 8)

Код:

#!/usr/bin/expect

# Spawn Python and await prompt
spawn mono OpenSim.exe

expect_background {
    "Now recording all stats to file every {0}ms" { sleep 10 ; send "stats record stop\n" ; expect "Stopped recording stats to file." {sleep 5 ; send "quit\n"} }
}

interact

1 Ответ

0 голосов
/ 08 октября 2019

Это нормально, если, когда ваш expect_background отправляет quit\n, порожденный процесс завершается. Это закроет файловый дескриптор ( spawn id ), связывающий ожидаемый процесс, и поэтому interact не удастся, когда он попытается продолжить чтение (или запись) процесса.

Вы можетеподавить ошибку, добавив в фоновую команду строку, которая обнаруживает конец файла и завершает работу, когда это происходит:

expect_background {
  "Now recording all stats to file every {0}ms" \
  { sleep 10 ; send "stats record stop\n" ; \
    expect "Stopped recording stats to file." \
    { sleep 5 ; send "quit\n"; \
      expect eof exit } } }
...