LINUX.ORG.RU

bash скрипт цикл с условием

 


0

2

Здравствуйте, подскажите пожалуйста, есть текстовый файл с данными myfile (3 столбца: Дата, Размер, Наименование), данные динамически меняются в файле. Необходимо отфильтровать строки по самой ранней дате, в отфильтрованных строках посчитать сумму по столбцу Размер и далее проверить - если суммарный размер по столбцу Размер больше 10000, то выводим сообщение «Размер больше 10000», а если суммарный размер по столбцу Размер меньше 10000, то выполняем в цикле предыдущие действия - отфильтровываем строки по самой ранней дате, считаем сумму по столбцу Размер и если суммарный размер больше 10000, то выход из цикла, а если меньше 10000, то все заново Частично написал скрипт, но не пойму, как правильно написать цикл с условием. Сейчас скрипт выглядит так:

#!/bin/bash

# определяем самую раннюю дату в файле myfile
EARLIEST_DATE=`cat /root/myfile |awk '{print $1}' |sort |head -n 5 |tail -n 1`

# отфильтровываем все строки с этой самой ранней датой из файла myfile и выбираем только столбец с размером 
FILTER_STRINGS=`cat /root/myfile |grep $EARLIEST_DATE |awk '{print $3}' > $TMP_SIZE`

# суммируем размер за нашу дату
SUMMARY_SIZE=`cat $TMP_SIZE| awk '{s += $1} END {print s}'`

# проверяем, больше требуемого размера наш суммарный размер по столбцу Размер или нет 
if [[ $SUMMARY_SIZE -gt 10000 ]]; then
echo "Размер больше 10000"
  else 
    #здесь должен идти цикл с повторяющимися действиями, не пойму, как правильно написать

echo "Размер больше 10000"
  else 
    #здесь должен идти цикл с повторяющимися действиями, не пойму, как правильно написать
    exec $0

Это полностью соотв. твоему условию (запросу)

futurama ★★★★★
()