Циклы в bash практические примеры

counter expr pinger swap loop

A. Пример проверки условия - пока размер файла подкачки не равен нулю, будет записываться

информация о его размере и времени в лог-файл.

#!/bin/bash
memswap=`free -m | grep Swap | awk '{print $2}'`
while [ $memswap -gt 0 ]
do
logtime=`date +'%H':'%M'`
memswap=`free -m | grep Swap | awk '{print $2}'`
echo $memswap $logtime >> swapoff.log
tail -n 1 swapoff.log
sleep 60
done

B. Организация счетчика в цикле

#!/bin/sh
count=0;
for util in bmon trafshow3 iftop slurm pftop ntop
do
        count=`expr $count + 1`;
        echo $count")" $util;
done

C. Перебор 4-го октета IP-адреса (вывод чисел с 1 до 255)

#!/bin/bash
#for (( ip=10; ip>0; ip-- ))
for (( ip=1; ip<255; ip++ ))
do
echo -n $ip
printf "\n"
done

D. Перезапуск программы циклом until

until ./redis-audit.rb -h 127.0.0.1 -s 50000 > dtf-audit; do echo "Try again"; sleep 1; done

E. Сжать все файлы в текущем каталоге - каждый отдельно

for lf in $(ls -1); do gzip $lf; done

F. Напечатать “лесенку” из символов

for (( i=1; i<80; i++ )); do perl -e "print '*' x $i"; echo -e "\r" ; done