Introduction to Bash Scripting 06 - A Simple "If" Statement
Оглавление:
ifзаявлениеif..elseЗаявлениеif..elif..elseЗаявление- Вложенные
ifзаявления - Несколько условий
- Тестовые операторы
- Вывод
Принятие решений - одна из самых фундаментальных концепций компьютерного программирования. Как и в любом другом языке программирования,
if
,
if..else
,
if..elif..else
и вложенные операторы
if
в Bash могут использоваться для выполнения кода на основе определенного условия.
В этом руководстве мы познакомим вас с основами операторов Bash
if
и покажем, как их использовать в сценариях оболочки.
if
заявление
Bash,
if
условные выражения могут иметь разные формы. Наиболее простой оператор
if
принимает следующую форму:
if TEST-COMMAND then STATEMENTS fi
Оператор
if
начинается с ключевого слова
if
за которым следует условное выражение и ключевое слово
then
. Утверждение заканчивается ключевым словом
fi
.
Если
TEST-COMMAND
оценивается как
True
,
STATEMENTS
выполняются. Если
TEST-COMMAND
возвращает
False
, ничего не происходит,
STATEMENTS
игнорируются.
Как правило, рекомендуется всегда делать отступы для вашего кода и отдельных блоков кода пустыми строками. Большинство людей предпочитают использовать отступы с 4 или 2 пробелами. Отступы и пустые строки делают ваш код более читабельным и упорядоченным.
Давайте рассмотрим следующий пример сценария, который проверяет, больше ли заданное число больше 10.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
Сохраните код в файле и запустите его из командной строки:
bash test.sh
Скрипт предложит вам ввести номер. Например, если вы введете 15, команда
test
будет иметь значение
true
потому что 15 больше 10, и будет выполнена команда
echo
внутри предложения
then
.
The variable is greater than 10.
if..else
Заявление
Оператор Bash
if..else
принимает следующую форму:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
Если
TEST-COMMAND
оценивается как
True
,
STATEMENTS1
будет выполнен. В противном случае, если
TEST-COMMAND
вернет значение
False
,
STATEMENTS2
будет выполнен. Вы можете иметь только одно предложение в выражении.
Давайте добавим предложение
else
в предыдущий пример сценария:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi
if..elif..else
Заявление
Оператор Bash
if..elif..else
принимает следующую форму:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
Если
TEST-COMMAND1
оценивается как
True
,
TEST-COMMAND1
будет выполнен. Если
TEST-COMMAND2
оценивается как
True
,
TEST-COMMAND2
будет выполнен. Если ни одна из тестовых команд не имеет значения
True
, выполняется
STATEMENTS2
.
Вы можете иметь одно или несколько
elif
предложений в выражении. Предложение
else
является необязательным.
Условия оцениваются последовательно. Как только условие возвращает
True
остальные условия не выполняются, и управление программой переходит к концу операторов
if
.
Давайте добавим предложение
elif
в предыдущий скрипт:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi
Вложенные
if
заявления
Bash позволяет вам вкладывать операторы
if
операторы
if
. Вы можете поместить несколько операторов
if
внутри другого оператора
if
.
Следующий скрипт предложит вам ввести три числа и напечатает наибольшее число среди трех чисел.
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi
Вот как будет выглядеть вывод:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
Вместо использования вложенных операторов
if
, как правило, более эффективно использовать оператор case.
Несколько условий
Логические операторы
OR
и
AND
позволяют использовать несколько условий в операторах
if
.
Вот еще одна версия скрипта для печати наибольшего числа среди трех чисел. В этой версии вместо вложенных операторов
if
мы будем использовать логический оператор
AND
(
&&
).
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi
Тестовые операторы
В Bash команда
test
принимает одну из следующих синтаксических форм:
test EXPRESSION]
Чтобы отменить тестовое выражение, используйте логический оператор
NOT
(
!
). При сравнении строк всегда используйте одинарные или двойные кавычки, чтобы избежать каких-либо проблем с разделением слов или смещениями.
Ниже приведены некоторые из наиболее часто используемых операторов:
-
-nVAR- Истина, если длина VAR больше нуля.-zVAR- Истина, если VAR пуст.STRING1 = STRING2- True [STRING1 и STRING2 равны.STRING1 != STRING2- Истинные STRING1 и STRING2 не равны.INTEGER1 -eq INTEGER2- Истинные INTEGER1 и INTEGER2 равны.INTEGER1 -gt INTEGER2- Истинный INTEGER1 больше, чем INTEGER2.INTEGER1 -lt INTEGER2- Истинный INTEGER1 меньше, чем INTEGER2.INTEGER1 -ge INTEGER2- Истинный INTEGER1 равен или больше, чем INTEGER2.INTEGER1 -le INTEGER2- Истинный INTEGER1 равен или меньше INTEGER2.-hFILE- True, если ФАЙЛ существует и является символической ссылкой.-rFILE- Истинно, если ФАЙЛ существует и доступен для чтения.-wFILE- Истинно, если ФАЙЛ существует и доступен для записи.-xFILE- True, если ФАЙЛ существует и является исполняемым.-dFILE- Истинно, если ФАЙЛ существует и является каталогом.-eFILE- Истинно, если ФАЙЛ существует и является файлом, независимо от его типа (узел, каталог, сокет и т. д.).-fFILE- Истинно, если ФАЙЛ существует и является обычным файлом (не каталогом или устройством).
Вывод
Операторы
if
,
if..else
и
if..elif..else
позволяют вам контролировать ход выполнения сценария Bash, оценивая заданные условия.
Заявление ACLU о пересмотре закона об эпиднадзоре
ACLU и другие группы подали в суд иск против нового закона о надзоре в США
Википедия Заявление о цензуре отправляет «запутывающее» сообщение
Правовой эксперт ставит под сомнение вопрос о том, должен ли сторожевой пейджор надлежит нарушать запрет на странице Википедии раньше на этой неделе.
Bash case заявление
Операторы Bash case обычно используются для упрощения сложных условий, когда у вас есть несколько различных вариантов. Использование оператора case вместо вложенного оператора if поможет вам сделать ваши bash-сценарии более удобочитаемыми и более простыми в обслуживании.







