Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скрипты bash

53K
24 февраля 2010 года
nicolaus2
13 / / 02.02.2010
Здравствуйте. Имею несколько проблем с несколькими задачами на bash.

Задача 1.

Имеется некий файл

 
Код:
1. Яблоко 9 грн.
2. Груша 20 грн.
3. Лимон 30 грн.
4. Апельсин 30 грн.
5. Банан 10 грн.
6. Айва 20 грн.
7. Вишня 30 грн.
8. Черешня 25 грн.
9. Слива 15 грн.
10. Клубника 40 грн.


Задача вывести название фрукта, цена которого ближе всего к средней цене.

Код:
avarage="$(awk '{s +=$3}END{temp=s/NR; print temp}' fileToTask3.txt)"
   
    awk '{s=$3; name =$2;minValue=50;
        if(s>av)
        {
        temp=s-av
        if(temp<minValue)
        {
            minValue=temp;
            line=name;
        }
        }
        else
        {
        temp=av-s
        if(temp<minValue)
        {
            minValue=temp;
            line=name
        }
        }
        } END {print line} ' av=$avarage fileToTask3.txt


В переменной avarage хранится среднее значение всех цен, далее передаём его на второй awk. Далее логика такая: Если цена больше средней цены, то отнимаем от неё среднюю цену, если меньше - отнимаем от средней цены цену фрукта. Таким образом мы получаем что то вроде модуля разницы между ценами. Где минимальный этот модуль - там и цена самая близкая.
И тут, кажется мне, проблема. Переменная minValue должна хранить минимальный модуль, но, как я понял, она инициализируется на каждой итерации заново. Если я её не объявлю до ифов, то за пределами её вообще видно не будет. Что неверно в логике? Как перестроить программу? Буду рад всякой помощи. Спасибо.
53K
24 февраля 2010 года
nicolaus2
13 / / 02.02.2010
Решено. Надо было всего лишь объявить переменную до awk и передать ей её в качестве параметра.
285
24 февраля 2010 года
Romik
479 / / 24.11.2002
или объявить переменную в BEGIN{ minValue=0;}
53K
25 февраля 2010 года
nicolaus2
13 / / 02.02.2010
Задача 2.

Узнать время запуска системы. Команда uptime может возвратить продолжительность работы системы, знает кто трезвый метод как узнать время запуска?
43K
26 февраля 2010 года
loki231
76 / / 27.09.2009
man last
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог