Всем привет!
Тут мы немного побаловались с консолью и командами.
Поехали)
Задача: взять результат из первого урока и написать скрипт с условием, переменными и выводом в терминал с датой.
Решение:
#!/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:)
На сегодня все и всем хорошего настроения 🙂