Сохранить вывод терминала в переменную в ожидании / tcl

Привет всем, мне нужно использовать интерактивную программу, и я хочу ее автоматизировать с ожиданием. Мой опыт работы в Linux и сценариях не самый лучший. Итак, это вывод программы:

enter minimum cross-correlation threshold: 0.15
enter the range and azimuth error thresholds: 1.6 1.0

range, azimuth error thresholds: 1.60000     1.00000
cross-correlation threshold: 0.15000
*
*
*
model fit std. dev. (samples) range: 0.5298   azimuth: 0.4166
set new error bounds? (0: no, 1: yes): 0

Первые две строки и последняя интерактивны. Таким образом, с ожиданием и отправкой не было проблем, чтобы вводить пороги за один раз. Но я хочу повторить этот процесс. Поэтому я должен сохранить результаты «диапазон: 0,5298 азимут: 0,4166» на две переменные, а затем снова запустить, пока не получу хорошие результаты, например. "диапазон: 0,02 азимут: 0,02".

У кого-нибудь есть идея, как я могу хранить результаты, сравнивать их и выполнять итерацию процесса?

Это работает:

#!/usr/bin/expect
spawn ./offset_fitm_exp
expect "enter minimum cross-correlation threshold:" { send "0.15\r" }
expect "enter the range and azimuth error thresholds:" { send "1.6 1.0\r" }
expect "set new error bounds? (0: no, 1: yes):" { send "0\r" }
interact

Спасибо за вашу помощь ! Бьорн

1
задан 2 February 2016 в 19:01

1 ответ

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

set A1 [lrange $expect_out(1,string) 2]
set A2 [lrange $expect_out(1,string) 3]

затем сделать что-то вроде:

if {$A1>=N || $A2>=N} do something (like change the set a1,a2 values, or ....

Проверять позже.

0
ответ дан 23 May 2018 в 13:49

Другие вопросы по тегам:

Похожие вопросы: