Как использовать if-else в сценариях оболочки?
Продолжая наше предыдущее руководство по массивам в сценариях оболочки, давайте разберемся, как мы можем использовать if-else в сценариях оболочки.
Условное программирование — важная часть любого языка программирования, потому что выполнение каждого отдельного оператора в нашей программе чаще всего нежелательно.
И нам нужен способ условного выполнения операторов. Оператор if-else в сценариях оболочки служит именно этой ситуации.
Условия в сценариях оболочки
Одной из наиболее важных частей условного программирования являются операторы if-else. Оператор if-else позволяет вам выполнять итеративные условные операторы в вашем коде.
Мы используем if-else в сценариях оболочки, когда хотим оценить условие, а затем решить выполнить один набор между двумя или более наборами операторов, используя результат.
По сути, это позволяет нам выбрать ответ на результат, который оценивается нашим условным выражением.
Как работает if-else в сценариях оболочки?
Теперь мы знаем, что такое функция if-else и почему она важна для любого программиста, независимо от его предметной области. Чтобы понять if-else в сценариях оболочки, нам нужно разобрать работу условной функции.
Давайте посмотрим на синтаксис блока условия if-else.
if [condition]
then
statement1
else
statement2
fi
Здесь у нас есть четыре ключевых слова, а именно if, then, else и fi.
- За ключевым словом if следует условие.
- Это условие оценивается, чтобы решить, какой оператор будет выполняться процессором.
- Если условие оценивается как ИСТИНА, процессор выполнит оператор(ы), за которыми следует ключевое слово затем. В синтаксисе он упоминается как оператор1.
- В случае, когда условие оценивается как FALSE, процессор выполнит оператор(ы), за которыми следует ключевое слово else. В синтаксисе функции это обозначается как оператор2.
Важно иметь в виду, что, как и программирование на C, сценарии оболочки чувствительны к регистру. Следовательно, вам нужно быть осторожным при использовании ключевых слов в вашем коде.
Как использовать if-else в сценарии оболочки
Легко увидеть синтаксис функции и поверить, что знаешь, как ее использовать. Но всегда лучше понять функцию на примерах, потому что они помогают понять роль, которую играют различные аспекты функции.
Вот несколько полезных примеров if-else в сценариях оболочки, чтобы дать вам лучшее представление о том, как использовать этот инструмент.
Command | Description |
&& | Logical AND |
$0 | Argument 0 i.e. the command that’s used to run the script |
$1 | First argument (change number to access further arguments) |
-eq | Equality check |
-ne | Inequality check |
-lt | Less Than |
-le | Less Than or Equal |
-gt | Greater Than |
-ge | Greater Than or Equal |
1. Использование if-else для проверки равенства двух чисел
Когда вы пытаетесь понять работу такой функции, как if-else, в сценарии оболочки, лучше начать с простого. Здесь мы инициализируем две переменные a и b, а затем используем функцию if-else, чтобы проверить, равны ли две переменные. Сценарий bash для этой задачи должен выглядеть следующим образом.
#!/bin/bash
m=1
n=2
if [ $n -eq $m ]
then
echo "Both variables are the same"
else
echo "Both variables are different"
fi
Выход:
Both variables are different
2. Использование if-else для сравнения двух значений
Более распространенное использование if-else в сценариях оболочки для сравнения двух значений. Сравнение переменной с другой переменной или фиксированным значением помогает в самых разных случаях программистам всех мастей.
Ради этого примера мы будем инициализировать две переменные и использовать функцию if-else, чтобы найти переменную, которая больше другой.
#!/bin/bash
a=2
b=7
if [ $a -ge $b ]
then
echo "The variable 'a' is greater than the variable 'b'."
else
echo "The variable 'b' is greater than the variable 'a'."
fi
Выход:
The variable 'b' is greater than the variable 'a'.
3. Использование if-else для проверки четности числа
Иногда мы сталкиваемся с ситуациями, когда нам нужно иметь дело с четными и нечетными числами и различать их. Это можно сделать с помощью if-else в сценариях оболочки, если мы воспользуемся помощью оператора модуля.
Оператор модуля делит число на делитель и возвращает остаток.
Поскольку мы знаем, что все четные числа кратны 2, мы можем использовать следующий сценарий оболочки, чтобы проверить, является ли число четным или нечетным.
#!/bin/bash
n=10
if [ $((n%2))==0 ]
then
echo "The number is even."
else
echo "The number is odd."
fi
Выход:
The number is even
Как видите, мы заключили часть условия в двойные скобки. Это потому, что нам нужно, чтобы операция по модулю выполнялась до проверки условия.
Кроме того, заключение в двойные скобки запускает операторы в стиле C, что позволяет обрабатывать некоторые команды в стиле C в сценариях bash.
4. Использование if-else в качестве простой подсказки пароля
Функция if-else известна своей универсальностью и диапазоном применения. В этом примере мы будем использовать if-else в сценарии оболочки, чтобы создать интерфейс для запроса пароля.
Для этого мы попросим пользователя ввести пароль и сохранить его в переменной pass.
Если он соответствует предварительно определенному паролю, который в этом примере является «паролем», пользователь получит вывод как -\«Пароль правильный».
В противном случае сценарий оболочки сообщит пользователю, что пароль неверен, и попросит повторить попытку.
#!/bin/bash
echo "Enter password"
read pass
if [ $pass="password" ]
then
echo "The password is correct."
else
echo "The password is incorrect, try again."
fi
Заключение
Функция if-else в сценарии оболочки является важным преимуществом для программистов оболочки. Это лучший инструмент для использования, когда вам нужно выполнить набор операторов на основе заранее определенных условий.
Блок if-else — одна из самых важных частей условного программирования. Регулируя выполнение определенных операторов, вы не только делаете свой код более эффективным, но и высвобождаете драгоценное время, которое процессор мог потратить впустую на выполнение операторов, которые не нужны для конкретного случая.
Мы надеемся, что это руководство помогло вам понять, как использовать функцию if-else. Если у вас есть какие-либо вопросы, отзывы или предложения, не стесняйтесь обращаться к нам в комментариях ниже.