В области программирования принятие решений является фундаментальной концепцией. Оно является основой логики любого кода, и сценарии Bash не являются исключением. В этом руководстве мы рассмотрим все тонкости оператора if else в Bash и получим полное представление о его использовании, а также множество примеров для закрепления полученных знаний.
Освоение основ оператора 'if' в Bash
Наиболее простой формой принятия решений в сценариях Bash является оператор if. Он имеет следующую структуру:
1 2 3 4 | if TEST-COMMAND then STATEMENTS fi |
Оператор if начинается с ключевого слова if, за ним следует условное выражение, а затем ключевое слово then. Завершается оператор ключевым словом fi. Если TEST-COMMAND выдает значение True, то STATEMENTS выполняются. Если TEST-COMMAND возвращает False, то STATEMENTS игнорируются.
Например, рассмотрим следующий сценарий, который проверяет, больше ли заданное число 10:
1 2 3 4 5 6 7 8 9 | #!/bin/bash echo -n "Введите число: " read VAR if [[ $VAR -gt 10 ]] then echo "Переменная больше 10". fi |
При запуске этого скрипта появляется запрос на ввод числа. Если ввести 15, то команда test получит значение true, так как 15 больше 10, и команда echo, находящаяся в предложении then, будет выполнена.
Расшифровка оператора 'if else' в Bash
Оператор if else в Bash позволяет определить альтернативный набор операторов, которые будут выполняться, когда значение TEST-COMMAND будет равно False. Его структура выглядит следующим образом:
1 2 3 4 5 6 | if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi |
Если TEST-COMMAND выдает значение True, то будет выполнено STATEMENTS1. В противном случае, если TEST-COMMAND вернет значение False, будет выполнено STATEMENTS2.
Модифицируем предыдущий сценарий, включив в него предложение else:
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash echo -n "Введите число: " чтение VAR if [[ $VAR -gt 10 ]] then echo "Переменная больше 10". else echo "Переменная равна или меньше 10". fi |
Теперь, если запустить скрипт и ввести число, он будет выводить разные сообщения в зависимости от того, больше или меньше/равно 10 это число.
Погружение в 'else if' в сценариях Bash
Оператор Bash if...elif...else позволяет задать дополнительные условия для проверки, если исходное условие if равно False. Его структура выглядит следующим образом:
1 2 3 4 5 6 7 8 9 | if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi |
Если значение TEST-COMMAND1 равно True, то будут выполнены STATEMENTS1. Если TEST-COMMAND2 имеет значение True, то выполняется STATEMENTS2. Если ни одна из тестовых команд не имеет значения True, то выполняется STATEMENTS3.
Добавим в предыдущий скрипт предложение elif:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/bin/bash echo -n "Введите число: " чтение VAR if [[ $VAR -gt 10 ]] then echo "Переменная больше 10" elif [[ $VAR -eq 10 ]] then echo "Переменная равна 10" else echo "Переменная меньше 10" fi |
Понимание вложенных операторов 'if' в Bash
Bash позволяет вложить операторы if в операторы if. Можно поместить несколько операторов if внутри другого оператора if. Рассмотрим сценарий, который предлагает ввести три числа и выводит наибольшее из них:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/bin/bash echo -n "Введите первое число: " read VAR1 echo -n "Введите второе число: " read VAR2 echo -n "Введите третье число: " read VAR3 if [[ $VAR1 -ge $VAR2 ]] then if [[ $VAR1 -ge $VAR3 ]] then echo "$VAR1 - наибольшее число" else echo "$VAR3 - наибольшее число" fi else if [[ $VAR2 -ge $VAR3 ]] then echo "$VAR2 - наибольшее число" else echo "$VAR3 - наибольшее число" fi fi |
Работа с несколькими условиями в операторах Bash 'if'
Логические операторы OR (||) и AND (&&) позволяют использовать несколько условий в операторах if. Вот версия предыдущего сценария, в которой вместо вложенных операторов if используется логический оператор AND (&&):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/bin/bash echo -n "Введите первое число: " прочитать VAR1 echo -n "Введите второе число: " считать VAR2 echo -n "Введите третье число: " считать VAR3 if [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]] then echo "$VAR1 - наибольшее число". elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]] then echo "$VAR2 - наибольшее число" else echo "$VAR3 - наибольшее число" fi |
Заключение
Операторы if, if else и if elif else в сценариях Bash являются мощными инструментами для управления ходом выполнения сценария в зависимости от определенных условий. Благодаря глубокому пониманию этих понятий и большому количеству практики вы сможете писать эффективные и действенные сценарии Bash.