есть большая задача, застопорился на выводе команды ls в массив
#!/bin/bash
catalog_osnovnoy=/home/bloodlettinger/test/share
cd $catalog_osnovnoy
declare -a dir_mesyac=$(ls -1)
for ((i=0;i<${#dir_mesyac[@]};i++));do
cd $catalog_osnovnoy/${dir_mesyac[$i]}
declare -a dir_den=$(ls);
echo ${dir_mesyac[$i]}
echo $dir_den
done
exit 0
сейчас пытался написать вывод ls в массив, потом пройтись по этим каталогам и в каждом из них выполнить действия, для проверки эхом вывод делаю. в этом коде в первый элемент массива записывается весь вывод команды, т.е все каталоги в одну переменную пишутся, а надо что бы каждый каталог в новой переменной массива. Для этого надо делать цикл с фильтром вывода ls по пробелам или как то проще можно? если не затруднит, приведите плз пример рабочего кода похожего, гугл мне не помог (
Пользователь решил продолжить мысль 06 Января 2011, 00:06:21:
порылся по форуму, из подобных конвееров повыбирал что то похожее написал вот так:
declare -a dir_mesyac
i=0; ls | while read; do ${dir_mesyac[i++]}=$REPLY; done
на выход получил вот такое:
строка 8: =dir_mesyac[i]: команда не найдена
строка 8: =[i]: команда не найдена
строка 8: =месяц_01: команда не найдена
строка 8: =месяц_02: команда не найдена
строка 8: =месяц_03: команда не найдена
подскажите почему присваивание элементам массива не срабатывает? в $REPLY то, как видно из выхода, построчно запись идет норм