LINUX.ORG.RU

Поиск в переменных

 


0

1

Первая тема тут - Ruby, сохранение вывода в переменную. Имеется такой код:

while dump.scan(/More/) do host.cmd(" ") {|a| dump=a; puts a}
end
dump - заранее объявлена и равна «пустоте» (dump=""). А переменная a - это «заполнитель» (так я называю конструкцию вида |a|). Могу ли я искать в «заполнителе», т.к. в dump всегда будут присутствовать строки «от старого» вывода. Редактировать вывод (удалять строки, где есть More) нежелательно.

всегда будут присутствовать строки «от старого» вывода

Каждый раз, когда ты делаешь dump = a, переменная dump переписывается же.

anonymous
()

Можешь сделать

dump = []
dump << a

и искать в массиве.

Вообще у тебя здесь ад:

while dump.scan(/More/) do host.cmd(" ") {|a| dump=a; puts a}
end
ты проходишь по переменной и одновременно меняешь ее.

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

Как я понял она не переприсваивается, а дополняется выводом. Я не описал ситуацию: например, я пытаюсь получить список mac-адресов с коммутатора, список на несколько страниц, прокручивающихся клавишей пробел при приглашении вида " ----More---- ". Использую модуль telnet. dump=«» #пустая переменная, в которую в дальнейшем будет сохраняться вывод

host.cmd("display mac-address") {|c| dump=c; print c} # команда вывода таблицы mac-адресов
while dump.scan(/More/) do host.cmd(" ") {|a| dump=a; puts a} #здесь на каждое "пролистывание" отправляется пробел " ".
end
Получается переменная dump сохраняет в себя весь вывод, в том числе и несколько «пролистываний», т.е. строк " ----More---- ". .scan всегда находит условие, и цикл не завершается.

Могу неправильно понять и ошибиться, но вроде бы в массиве ситуация повторится, нет?

hasculdr
() автор топика

Могу ли я искать в «заполнителе», т.к. в dump всегда будут присутствовать строки «от старого» вывода.

У тебя же dump=a, = это знак равенства. И как ты хочешь искать в a которая внутри {} за пределами этих {}? Вообще нифига не понятно что тебе нужно.

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

Я думаю, что заполнитель а обновлется после каждого «нажатия» на пробел и на «последнем экране» не будет строки с /More/, и цикл сможет завершиться.

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

Значит, я тебя не понял. a «складывается» в dump, поэтому там всегда будут присутствовать несколько More. Т.к. я сканирую именно dump (a сканировать не получается), всегда находятся More, которые были сохранены в dump ранее, и цикл не завершается. Предложение сохранять и искать в массиве - нужно проверять последний индекс, в котором More гарантированно не будет, я правильно понял?

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