The OpenNET Project / Index page

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

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

"переменные в while и вне его"  +/
Сообщение от localhorst (ok) on 10-Янв-11, 23:25 
Граждане, сломал моск, хоть тема и баян...
В общем, суть в файлике такого вида:

$ head codes
200
200
304
302
200
500
200
301
404
200

Строк в нем много.

Я хочу получить в переменную строку вида:
"100899 200", "9 301", "46908 302", "14378 304", "493 404", "11 500"
А еще лучше получить сразу массивом codes, где, к примеру, codes[0]="100899 200"

Дошел до такого:
$ cat sorter.sh
#!/usr/local/bin/bash
sort codes | uniq -c | while read -r i; do
    f="`
        if [ -n "$f" ]; then
            echo "\$f, "
        fi
    `\"$i\""
    echo "$f"
done
$ ./sorter.sh
"100899 200"
"100899 200", "9 301"
"100899 200", "9 301", "46908 302"
"100899 200", "9 301", "46908 302", "14378 304"
"100899 200", "9 301", "46908 302", "14378 304", "493 404"
"100899 200", "9 301", "46908 302", "14378 304", "493 404", "11 500"


Но никакие шаманства не помогли получить содержимое $f из последней итерации while после done.

Помогите советом, плз. (:

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "переменные в while и вне его"  +/
Сообщение от Andrey (??) on 11-Янв-11, 06:43 
переменная f не доступна потому что тут вызывается несколько вложеных процессов.
когда команда вызываетс через | то стартует новый процесс и f определена в самом последнем.
когда цикл закончился то переменая ушал вместе с процесом.
Можно внутри цикла посылать f в файл и потом сделать tail -n1 па этот файл.

ещё можно сделать в одну строку:
$ sort codes | uniq -c | xargs | sed 's/\([^ ]\+\) \+\([^ ]\+\)/"\1 \2",/g' | sed "s/,$//"

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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