Я столкнулся и решил похожую проблему для взаимодействия с bash. Я полагаю, что этот подход обобщает любую другую интерактивную среду, которая обеспечивает неоперативный вывод с фиксированной строкой.
По сути, я обертываю команду двумя фиксированными строками, а затем ищу шаблон, который включает эти строки в начале и конце, и сохраняю содержимое между ними. Например:
set var "";
expect $prompt { send "echo PSTART; $command; echo PEND;\r"; }
expect {
-re PSTART\r\n(.*)PEND\r\n$prompt { set var [ string trim $expect_out(1,string) ]; send "\r"; }
-re $prompt { set var "" ; send "\r"; }
timeout { send_user "TIMEOUT\n"; exit }
}
Я подозреваю, что этот подход будет работать и с символами комментария оболочки, или с простой командой состояния, которая возвращает известный вывод.
Тогда вы можете делать все, что вам нужно, с содержимым 'var'.