LINUX.ORG.RU

bash: длина массива


0

1

есть некий текстовый файл с колонкой в которой записанны численные значения (не целые числа).

если я загружаю файл как rh=$(cat z.tmp), то как найти длину массива чисел, записанного в файл? Перебирать по одному элементу? Или есть решения попроще?

спасибо :)



Последнее исправление: pivanov (всего исправлений: 1)

rh=$(cat z.tmp)

это не массив

текстовый файл с колонкой ... как найти длину массива чисел, записанного в файл

cat z.tmp | wc -l

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от ananas

да, это работает для обычных массивов, но sdio написал что я загружал «текстовый файл с колонкой». Оказалось так и есть, потому и не работало ${#rh[@]} изначально. спасибо :)

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

спасибо, так и есть, я загружал не в массив. а как это затолкать в массив не подскажете?

идея в том, чтобы все элементы этого массива сделать нулями и потом записать в другой файл.

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

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

а как это затолкать в массив не подскажете?

ar=($rh)

sdio ★★★★★
()

пока сделал так:

zl=$(cat z.tmp | wc -l) rm rho.dat for i in `seq 1 $zl`; do echo 0.0 >> rho.dat done

zl - как раз число элементов в массиве, записанном в файле z.tmp. Решение основной проблемы найдено, но если кто еще подскажет как сделать из содержимого z.tmp массив, то будет совсем замечательно :)

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

дважды спасибо :) всё работает замечательно :)

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