LINUX.ORG.RU
ФорумAdmin

expect $expect_out()

 , ,


0

1

Хай! Использую $expect_out(buffer), что бы получить вывод из запущенной программы! Далее выведенное передаем как аргумент и вызываю save_data.sh При выводе первого expect_out(buffer), отрабатывает корректно! При втором вызове пусто!

Я предполагаю, что это связано с тем что запускается еще один spawn С bash работаю впервые, прошу не ругаться!))

code

#!/usr/bin/expect -f
spawn ./execute_file.sh
set executefileID $spawn_id

expect -re "(.*)Continue\r"
set myout $expect_out(buffer)
spawn ./save_data.sh  "$myout" 
send -- "done1\r" 

expect -re "(.*)Continue\r"
set myout2 $expect_out(buffer)
spawn  ./save_data.sh  "$myout2" 
send -- "done2\r" 
expect eof

Что именно должен делать этот скрипт? Ощущение, что вместо второго/третьего spawn вам нужен exec...

mky ★★★★★
()
Ответ на: комментарий от mky

Добрый день! Если речь идет про spawn ./save_data.sh «$myout» и spawn ./save_data.sh «$myout2», то выполняется второй файл - save_data.sh, который фильтрует данные и записывает их в текстовый документ.

Скрипт save_data

#!/bin/bash

strindex() { 
  x="${1%%"$2"*}"
  [[ "$x" = "$1" ]] && echo -1 || echo ${#x}
}

start=$(strindex "$1" "with the following value")
string=${1:$start + 29}
end=$(strindex "$string" " ")
string=${string:0:end-5}
echo "AAAAA: $string">>result.txt

Про exec не подумал, надо пробовать)

max_online
() автор топика
Ответ на: комментарий от max_online

Нет, было не понятно, первое порождение процесса ( spawn ./execute_file.sh ) должно существовать на протяжении всего скрипта, или spawn ″./save_data.sh «$myout2»″ должен получать данные от ″spawn ./save_data.sh «$myout»″.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.