Android

Bash if..else заявление

Introduction to Bash Scripting 06 - A Simple "If" Statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Оглавление:

Anonim

Принятие решений - одна из самых фундаментальных концепций компьютерного программирования. Как и в любом другом языке программирования, 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 ( ! ). При сравнении строк всегда используйте одинарные или двойные кавычки, чтобы избежать каких-либо проблем с разделением слов или смещениями.

Ниже приведены некоторые из наиболее часто используемых операторов:

  • -n VAR - Истина, если длина VAR больше нуля. -z VAR - Истина, если 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. -h FILE - True, если ФАЙЛ существует и является символической ссылкой. -r FILE - Истинно, если ФАЙЛ существует и доступен для чтения. -w FILE - Истинно, если ФАЙЛ существует и доступен для записи. -x FILE - True, если ФАЙЛ существует и является исполняемым. -d FILE - Истинно, если ФАЙЛ существует и является каталогом. -e FILE - Истинно, если ФАЙЛ существует и является файлом, независимо от его типа (узел, каталог, сокет и т. д.). -f FILE - Истинно, если ФАЙЛ существует и является обычным файлом (не каталогом или устройством).

Вывод

Операторы if , if..else и if..elif..else позволяют вам контролировать ход выполнения сценария Bash, оценивая заданные условия.

терминал bash