[Video] v20.23 Операторы ветвления – if-then-else.

В своём прошлом видео “[Video] v20.22 Операторы ветвления – if-then.” я начал рассказ о операторах ветвления.
Сегодня я продолжу рассказ и расскажу о конструкции if-then-else.

Скрипт показанный в предыдущем видео и описанный в посте здесь на сайте можно улучшить, добавить опцию else:
$ cat script.v20.23.sh
# this is a script about if-then
clear
echo -e "\033[32m Hi! Please, enter the source and destination file names: \033[0m"
read sourcename destinationname
echo -e "\033[32m\n ls -1 \033[0m"
ls -1
if mv $sourcename $destinationname
then
echo -e "\033[36m\n File has been renamed successfully! \n\033[0m"
echo -e "\033[32m ls -1 \033[0m"
ls -1
else
echo -e "\033[36m\n ERROR! Looks like source file does not exist. \n\033[0m"
fi

Данный скрипт, в случае, если исходный файл отсутствует выводится дополнительная информация об ошибке, что повышает usability данного скрипта.

Примеры выполнения скрипта.
Пример без ошибок, когда всё хорошо(когда исходный файл существует – вывод аналогичен тому что был в предыдущем видео):
$ bash script.v20.23.sh
Hi! Please, enter the source and destination file names:
old new

ls -1
old
script.v20.23.sh

File has been renamed successfully!

ls -1
new
script.v20.23.sh

——————
Пример с ошибкой(когда файл исходный файл не существует):
$ bash script.v20.23.sh
Hi! Please, enter the source and destination file names:
old new

ls -1
new
script.v20.23.sh
mv: cannot stat ‘old’: No such file or directory

ERROR! Looks like source file does not exist.

Дополнительная конструкция с else даёт большие возможности для обработки каких-либо событий. Теперь результат скрипта может изменяться в зависимости от нескольких условий.
Пример которвый я показал очень прост, но можно придумать задачу в которой данная конструкция полезна в реальных условиях.

Например,
У вас производится бекап какой-либо информации по расписанию.
Вы копируете какие-то данные со своего сервера на бекап сервер. Но что если бекап вы делаете, например, раз в неделю и в момент когда он должен был произойти были проблемы с Интернетом и бекап не мог пройти?
В данном случае можно составить следующую конструкцию используя if-then-else:

Логическая конструкуия:
if – если потеря пакетов до сервера ниже 20%
then – произвести копирование файлов с одного сервера на другой
else – error -ошибка, нужно отправить короткое письмо Вам с сообщением о не удавшемся бекапе.
Если сам бекап сервер не имел доступа в интернет в момент бекапа,то письмо возможно не уйдёт, возможно будет ждать в очереди, но это лучше чем без проверки.
Попробуйте написать такой скрипт самостоятельно, свой вариант я покажу в одном из следующих видео!

Подробнее смотрите в моём видео.
На сегодня всё, спасибо за внимание, надеюсь вам понравилось. =)
Подписывайтесь на канал!

Удачи!

Sources:
youtube
opennet