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

В этом видео я начинаю рассказ о операторах ветвления.
Начинаю с “условных операторах с одной ветвью“.

Для начала расскажу о кодах завершения программ, утилит, скриптов – каждая операция имеет код завершения – успешный – “0”, и неуспешный – “1”. Возможны и другие коды, но эти два- основные.
Например, если у вас есть файл old и вы его переименуете в new, то код завершения будет – 0:
$ ls -1
old
$ mv old new
$ echo $?
0 <<<<<< код завершения предыдущей команды. $ ls -1 new

Если я попробую выполнить переименование ещё раз, то получу ошибку и код - 1:
$ mv old new
mv: cannot stat ‘old’: No such file or directory
$ echo $?
1

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

Из вики - При выполнении такого оператора вычисляется условие, и если оно истинно, то выполняются команды до ключевого слова end (в данном случае ключевое слово fi), в противном случае выполнение программы продолжается со следующей за условным оператором команды.

Вот мой скрипт, он осуществляет переименование файла (подробнее смотрите в видео):

$ cat script.v20.22.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 -la \033[0m"
ls -1
if mv $sourcename $destinationname
then
echo -e "\033[36m\n File has been been renamed successfully! \n\033[0m"
echo -e "\033[32m ls -la \033[0m"
ls -1
fi

Результат выполнения скрипта в случае если условие в if положительно:
$ bash script.v20.22.sh
Hi! Please, enter the source and destination file names:
old new

ls -la
old
script.v20.22.sh

File has been been renamed successfully!

ls -la
new
script.v20.22.sh

Результат выполнения скрипта в случае если условие в if отрицательно:
$ bash script.v20.22.sh
Hi! Please, enter the source and destination file names:
old new

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

Вот ещё один скрипт уже с логической операцией сравнения.
$ cat script.v20.22_v2.sh
# this is a script about if-then
clear
echo -e "Please, enter values of _a_ and _b_ \n _a_ should be bigger than _b_!"
read a b
echo -e "a=$a \nb=$b"
if expr $a ">" $b
then
echo "a>b - You entered it right!"
fi

Здесь происходит сравнения введёных пользователем значений переменных a и b. Если a>b, то условие выполняется, если нет, то выход из оператора ветвления.

Положительное условие:
$ bash script.v20.22_v2.sh
Please, enter values of _a_ and _b_
_a_ should be bigger than _b_!
3 1
a=3
b=1
a>b - You entered it right!

Отрицательное условие:
$ bash script.v20.22_v2.sh
Please, enter values of _a_ and _b_
_a_ should be bigger than _b_!
1 2
a=1
b=2
0

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

Удачи!

Sources:
youtube
opennet