The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"скрипт bash, глюк при работе с массивом"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"скрипт bash, глюк при работе с массивом"  
Сообщение от chemist (??) on 10-Авг-08, 22:01 
Задача найти файлы видеороликов, и отсортировать их по размеру

скрипт

#!/bin/bash
#
cd /mnt/fishing/ok/
declare -a arr
find . -regex '.*\.\(avi\|avs\|mpg\|mpeg\|mkv\|ogm\|wmv\|flv\|mov\|mp4\)$' -print | while read i; do
    FILESIZE=`stat --format='%s' "$i"`
    arr[$FILESIZE]=$i
    echo ${#arr[@]}
done
echo ${#arr[@]}

и в результате скрипт выводит
1
2
3
4
0
с 1 до 4 это выводит echo внутри цикла
а последний 0 выводится последним echo вне массива
почему массив обнуляется?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "скрипт bash, глюк при работе с массивом"  
Сообщение от phpcoder email(??) on 10-Авг-08, 22:11 
>Задача найти файлы видеороликов, и отсортировать их по размеру

Предлагаю не использовать массивы:

find . -regex '.*\.\(avi\|avs\|mpg\|mpeg\|mkv\|ogm\|wmv\|flv\|mov\|mp4\)$' -printf '%s %p\n' | sort -n -k1 | cut -d' ' -f2


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "скрипт bash, глюк при работе с массивом"  
Сообщение от chemist (??) on 10-Авг-08, 23:24 
>>Задача найти файлы видеороликов, и отсортировать их по размеру
>
>Предлагаю не использовать массивы:

угу, селал чуть по другому но всеравно вопрос с поведением массивов как-то подвисает

#!/bin/bash
#

CURDIR=`date +%Y-%m-%d`

mkdir /mnt/films/_unsorted_video/temp
cd /mnt/fishing/ok
find . -regex '.*\.\(avi\|avs\|mpg\|mpeg\|mkv\|ogm\|wmv\|flv\|mov\|mp4\)$' \
    -exec mv -t /mnt/films/_unsorted_video/temp {} \;

j=1
k=1
mkdir /mnt/films/_unsorted_video/$CURDIR/ /mnt/films/_unsorted_video/$CURDIR/$j >/dev/null 2>&1
cd /mnt/films/_unsorted_video/temp
ls -1 -S | while read i; do

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "подпроцессы при работе с переменными"  
Сообщение от Andrey Mitrofanov on 11-Авг-08, 16:23 
>#!/bin/bash
>find . -regex '.*\.\(avi\|avs\|mpg\|mpeg\|mkv\|ogm\|wmv\|flv\|mov\|mp4\)$' -print | while read i; do
>done
>echo ${#arr[@]}

http://www.opennet.ru/openforum/vsluhforumID1/79510.html#1

>почему массив обнуляется?

Потому что цикл исполняется _в_другом_ процессе, и "тот" и "этот" массивы - две большие разницы.

Что-то вроде http://www.opennet.ru/docs/RUS/bash_scripting_guide/bash_scr...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру