цикл for в bash скриптах

Циклы нам пригодятся в том случае, когда нужно выполнить какое-то количество одинаковых операций. Допустим сменить пароли всем пользователям в системе или проверить доступность десятка сайтов.
В простейшем случае используется следующий синтаксис:

for VARIABLE in значение1 значение2 значение3 значение4 значение5 значениеN
   do
     # действие 1
     # действие 2
     # действие 3
   done

Предположим, что каждое из значений выше, это длина стороны квадрата.
В качестве каждого действия, при помощи bc, мы посчитаем периметр , площадь и давление, которое оказывает российский боксёр Николай Валуев, равномерно надавливая своим весом (150 кг) на эту площадь :)))
Вспомним, что периметр считается по фрмуле:
P=4a
Площадь:
S=a2
Давление:
p=(mg)/S

Поехали:

#!/bin/bash

for a in 3 5 14 8 20
  do
    P=$(echo "$a*4"|bc)
    echo "Периметр квадрата со стороной $a см: $P см."
    S=$(echo "$a^2"|bc)
    echo "Площадь квадрата со стороной $a см: $S кв.см."
    p=$(echo "(150*9.8)/(($S/10000)*1000)"|bc -l)
    echo "Давление Н.Валуева на квадрат со стороной $a см: $p кПа"
  done

А теперь всё то же самое, только длины сторон будем передавать в качестве параметров и, как обычно, проверим, что параметры переданы:

#!/bin/bash

if [[ "$#" == "0" ]]
        then
            	echo "Выход. Пожалуйста, запустите скрипт с параметрами"
                exit 1
fi

for a in $@
  do
    P=$(echo "$a*4"|bc)
    echo "Периметр квадрата со стороной $a см: $P см."
    S=$(echo "$a^2"|bc)
    echo "Площадь квадрата со стороной $a см: $S кв.см."
    p=$(echo "(150*9.8)/(($S/10000)*1000)"|bc -l)
    echo "Давление Н.Валуева на квадрат со стороной $a см: $p кПа"
  done

Комментариев нет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *