BASH — как записать значения переменной (в цикле) в разные элементы массива?

#!/bin/bash
cat /user/test | while read line
do
case $line in
number?of?seconds* )
MASS=(`echo $line | grep -o '[0-9]\.[0-9][0-9][0-9]'`)
echo ${MASS[0]}
esac
done

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

Строки находит. Числа выводит. НО всё пишет в первый элемент массива. Как будто в одну переменную загоняю. Как заставить bash писать каждое значение в новый элемент массива?
  • Вопрос задан
  • 3724 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
НО всё пишет в первый элемент массива

Ну да, вы же в каждой итерации массив пересоздаёте.
Может сделать так?:
#!/bin/bash
declare -a MASS
cat /user/test | while read line
do
case $line in
number?of?seconds* )
    MASS[${#MASS[@]}]=`echo $line | grep -o '[0-9]\.[0-9][0-9][0-9]'`
    echo ${MASS[-1]}
    ;;
esac
done
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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