LINUX.ORG.RU

Bash, многострочный вывод stdout и присвоение его переменной

 


0

1

Здравия! Столкнулся с невозможностью присвоить переменной в bash многострочный вывод из stdout.

bur@tx9s ~ $ dd if=/dev/ttyAML0 count=5 2>/dev/null | head -n5 | grep -P '4,2V|8,4V|12.6V'
4,2V = 3.84
8,4V = 7.66
12.6V = 11.46

Так я его вижу в stdout. Нужно для далнейших действий взять всё в переменную. Если пытаться

bur@tx9s ~ $ var1=$(dd if=/dev/ttyAML0 count=5 2>/dev/null | head -n5 | grep -P '4,2V|8,4V|12.6V')
bur@tx9s ~ $ echo $var1
 12.6V = 11.46
То в переменную попадает только последняя строка. Как либо все три туда присвоить, либо все три строки присвоить трём разным переменным?

★★★★★

А конечная цель сего мероприятия какая? Куда-то записать полученные данные?

Можно попробовать использовать массивы в bash.

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

Цель это либо три строчки в одной переменной(если так можно), либо три строчки в разных переменных

burato ★★★★★
() автор топика

А закавычить переменную, echo "$var1"?

Еще бы в режиме отладки запустить, bash -vx, посмотреть, где там что теряется.

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

СПАСИИИИИБО!!!!! Заковычинг помог!!! Огромное спасибо!!!

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

Странно.

$ var1=($(cat tmp.txt | grep -P '4,2V|8,4V|12.6V'))
$ echo ${#var1[@]}
9

В текстовике выхлоп первой команды из стартового сообщения.

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