Bash-скрипты. Урок 2


Всем привет!
Тут мы немного побаловались с консолью и командами.
Поехали)

Задача: взять результат из первого урока и написать скрипт с условием, переменными и выводом в терминал с датой.
Решение:

#!/bin/bash
freemem=$(free -m | grep Mem | sed 's/\s\+/ /g' | cut -d' ' -f4)
datetime=$(date +\%Y-\%m-\%d@\%R)
if (( $freemem < 100 ))
then
echo "$datetime $freemem Mbytes free RAM memory < 100 Mbytes"
else
echo "$datetime $freemem Mbytes free RAM memory"
fi

Пояснение:
1. Файл
Быстренько создаем файл free-mem.sh (расширение весьма условное) и присваиваем атрибут исполняемости.
touch ./free-mem.sh
chmod +x ./free-mem.sh

Далее редактируем консольными редакторами vi или nano, но я предлагаю не париться и воспользоваться Midnight Commander (mc) — файловый менеджер с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных систем. Жмем shift+F4 и начинаем редактировать 🙂 Но истинные юниксоиды используют только консоль, только хардкор 😀

2. Shebang (шебанг)
Шебанг — последовательность из двух символов "#!" в начале файла скрипта.
Строка шебанга имеет следующий формат: #!interpreter [optional-arg]
interpreter — абсолютный путь к исполняемому файлу
optional‑arg — необязательный единственный аргумент
#!/bin/bash — выполнить файл с помощью bash (Bourne-Again SHell)

3. Пользовательские переменные
Bash-скрипты позволяют задавать и использовать в сценарии собственные переменные. Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария.
site="nemarov.com" — задаем переменной site значение «nemarov.com»
echo $site — команда echo выводит строку текста в терминал

bash-скрипт
#!/bin/bash
site="nemarov.com"
echo $site

Переменная freemem в нашем решении
freemem=$(free -m | grep Mem | sed 's/\s\+/ /g' | cut -d' ' -f4)
Знакомая строчка из первого урока, но нам неизвестна конструкция $()
$() — подстановка команд, извлекает информацию из вывода команд и назначает её переменным.
Т.е. в переменную freemem занесётся значение свободной оперативной памяти.

Переменная datetime в нашем решении
datetime=$(date +\%Y-\%m-\%d@\%R)
date — команда работающая с датой и временем, позволяет извлекать дату в разнообразном формате, в том числе и рассчитывать прошлое и будущее время.
bash-скрипт
#!/bin/bash
datetime=$(date +\%Y-\%m-\%d@\%R)
echo $datetime

4. Конструкция if-then-else
if-then-else — позволяет управлять потоком исполнения команд. Например, если некое значение меньше ста, нужно выполнить одно действие, в противном случае — другое.

if (( $freemem < 100 ))
then
echo "$datetime $freemem Mbytes free RAM memory < 100 Mbytes"
else
echo "$datetime $freemem Mbytes free RAM memory"
fi

Вывод при if-then

Вывод при if-else

Мы выполнили поставленную задачу (:ok:)
На сегодня все и всем хорошего настроения 🙂

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