Написание сценария оболочки Bourne Again Shell (Bash) может быть приятным опытом, особенно когда вы добавляете в него логику, обеспечивая его надежность. Один из способов внедрения этой логики, делая ваш сценарий умнее, – использование условных операторов, конкретно ‘bash if else’.
В этом глубоком погружении вы собираетесь осознать силу и тонкости операторов if-else и case в Bash. Это поможет вам создавать безошибочные, интеллектуальные сценарии Bash. Мы также добавим немного bewed practices, чтобы убедиться, что вы пишете сценарии, как профессионал.
Воодушевлены? Погружайтесь в это и повышайте свой уровень мастерства в написании сценариев Bash!
Подготовка к работе: Предварительные условия
Чтобы извлечь максимум из этого учебного пособия, вам понадобятся некоторые необходимые компоненты:
- A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
- A code/text editor to write and refine your ‘bash if else’ scripts.
Почему стоит использовать условные операторы bash if else?
Почему условные операторы так почитаются в сценариях Bash? Просто говоря, они наделяют ваши сценарии способностью принимать решения на основе заранее определенных условий.
Например, вы можете использовать ‘bash if else’ для проверки существования файла перед его удалением. В качестве альтернативы, вы можете захотеть проверить, имеет ли пользователь необходимые разрешения перед предоставлением им доступа к ресурсу.
Пропитывание скриптов структурами ‘bash if else’ не только увеличивает их гибкость, но и их эффективность. Представьте себе скрипт, предназначенный для удаления всех файлов в папке. Используя ‘bash if else’, вы можете хирургически удалить только те файлы, возраст которых превышает 30 дней, сохраняя остальные.
Погружение в выражение ‘bash if else’
Теперь давайте оставим введение позади и примемся за дело. Мы начнем с одного из самых широко принимаемых условных выражений: выражение ‘bash if else’.
В самом сердце выражения ‘bash if else’ находится ворота для вставки условий в ваши сценарии Bash. Обратите внимание на его элегантный синтаксис ниже:
- Он начинается с ключевого слова if, за которым следуют условия, заключенные в [[ ]]. После этого код, находящийся внутри выражения ‘bash if else’, выполняется, завершаясь ключевым словом fi.
- Ключевое слово then отделяет условие от действий (или операторов), которые выполняются, когда условия удовлетворяются. Этот блок действий может охватывать несколько строк, разделенных точкой с запятой (;).
Представьте себе создание системы входа в систему. Он запрашивает правильное имя пользователя перед предоставлением доступа:
1. Запустите ваш терминал и создайте новый файл bash_if_demo.sh с помощью вашего предпочтительного текстового редактора. Это будет наша площадка для понимания выражений ‘bash if else’.
2. Вставьте приведенный ниже пример “bash if else” в ваш файл bash_if_demo.sh. После вставки сохраните изменения и закройте редактор.
Пример скрипта “bash if else” запрашивает имя пользователя. Если введено ожидаемое имя пользователя, отображается приветственное сообщение, дополненное текущей датой и временем.
Поддержание записей о дате и времени попыток доступа пользователей может быть ценным для последующего анализа.
Вводная строка #!/bin/bash (обычно известная как shebang) указывает системе, какой интерпретатор использовать для обработки последующего кода в скрипте. Здесь мы выбрали интерпретатор “bash”.
3. Теперь давайте проверим наш сценарий ‘bash if else’. Выполните следующую команду:
Помните, что независимо от используемого вами варианта оболочки Bash, добавьте префикс ‘bash’ перед именем вашего сценария. Это гарантирует, что система будет использовать Bash для выполнения сценария.
Введите “ATA” и нажмите Enter. Результат должен быть аналогичным следующему:

Если вы вводите что-то кроме “ATA”, приветственное сообщение не будет отображаться в выводе. Будет показана только текущая дата и время. Это поведение обусловлено оператором ‘bash if else’, который проверяет точное соответствие значению переменной $NAME.
Обратите внимание, что операторы ‘bash if else’ чувствительны к регистру. Таким образом, “ata”, “aTa”, “Ata” и так далее отличаются от “ATA”.

Регулярно тестируйте свои сценарии ‘bash if else’ с разными входными данными. Это гарантирует, что сценарии работают как ожидается.
Глубже: Вложенные операторы ‘bash if else’
Вы уже освоили основы создания операторов ‘bash if else’. Хотя эти базовые знания достаточны для простых задач, сложные сценарии часто требуют более сложных конструкций. Здесь на сцену выходят вложенные операторы ‘bash if else’. В основном это оператор ‘if’, содержащий один или несколько дополнительных операторов ‘if’.
Приведенная структура иллюстрирует основный синтаксис вложенных операторов ‘bash if else’. Здесь внешний if [[ условия ]]
охватывает код, выполняемый только при выполнении условия. В нашем контексте вложенный код представляет собой еще один оператор ‘if’.
if [[ условия ]]
– Это представляет собой внешнее условие ‘bash if else’. Вложенный код (еще одно условие ‘if’) выполняется только в том случае, если указанное условие истинно.if [[ условие2 ]]
– Это представляет внутреннюю ‘bash if else’ клозу. Здесь находится код, который выполняется только в том случае, если оба условия удовлетворены.
Давайте углубимся. Улучшим наш предыдущий пример ‘bash if else’, добавив здесь if
-условие, которое спрашивает о пароле:
1. Во-первых, создайте новый файл с названием bash_nested_if_demo.sh с использованием вашего любимого текстового редактора.
2. Перенесите предоставленный ниже код ‘bash if else’ в файл bash_nested_if_demo.sh, сохраните изменения и закройте редактор.
Этот код ‘bash if else’ запрашивает как имя, так и пароль. Если условия для имени и пароля совпадают, отображается определенное сообщение. В противном случае выводится только текущая дата и время.
3. Теперь давайте посмотрим на этот сценарий ‘bash if else’ в действии. Выполните следующую команду:
Для оптимальных результатов введите ATA в качестве имени пользователя и pwd123 в качестве пароля.

Если ваш ввод отличается от “ATA” или “pwd123”, вы получите только обратную связь о текущей дате и времени. Это потому, что структура ‘bash if else’ требует выполнения обоих условий.

Расшифровка операторов ‘Bash If Else’
Операторы ‘if else’ являются основополагающими в сценариях Bash, обеспечивая решающие возможности для ваших сценариев. Однако важно понимать, что использование операторов ‘if’ не лишено недостатков.
Вызывающим вызовом является избыточная зависимость от ‘if’, что может запутать ваш код, делая его утомительным и сложным, особенно когда в игру вступают множественные вложенные операторы ‘if’. Такие сценарии рискуют стать “спагетти-кодом”, характеризующимся ухудшением читаемости и увеличением сложности.
Итак, как сделать ваш сценарий ‘bash if else’ более понятным? Оптимизируйте его с использованием операторов ‘if else’ вместо кучи вложенных ‘if’. Ключевое слово ‘else’ предлагает удобство указания фрагмента кода для выполнения, если условие ‘if’ не выполняется.
Для более ясной картины рассмотрим синтаксис ‘Bash If Else’ ниже, где:
if [[ conditions ]]
– Здесь оператор ‘bash if else’ включает в себя код (statement1
), который срабатывает только при соблюдении указанного условия.else
– Это часть структуры ‘bash if else’. Операторelse
охватывает код (statement2
), который выполняется, когда условие в предыдущем оператореif
не удовлетворено.
Представьте, что вы создаете простую игру ‘bash if else’, где система ожидает случайного числа от пользователя:
1. Начните с создания нового файла с именем bash_if_else_demo.sh.
2. Внедрите последующий код ‘bash if else’ в ваш файл bash_if_else_demo.sh, сохраните изменения и выйдите из файла.
Основной код ‘bash if else’ запрашивает у пользователя его удачное число. Если ввод четный, выводится сообщение “Вы выиграли!”. В противном случае нечетное число вызывает вывод “Вы проиграли!”.
3. Для просмотра работы сценария ‘bash if else’ выполните следующую команду:
Введя четную цифру, вы должны увидеть сообщение “Вы выиграли с помощью ‘bash if else’!”. Напротив, ввод нечетной цифры должен привести к обратной связи “Вы проиграли, используя ‘bash if else’!”.

Чтобы улучшить сценарий ‘bash if else’, рассмотрите возможность включения сегмента, который определяет, вводит ли пользователь букву или отличный символ вместо числа.
Декодирование ‘Bash If Else’ и Конструкций Case
На данный момент вы исследовали несколько способов принятия решений в ваших сценариях Bash, а именно операторы ‘bash if else’. Но Bash предлагает еще один путь принятия решений – оператор case
.
Аналогично ‘bash if else’, оператор case
искусен в определении последовательностей кода для выполнения на основе определенных условий. Значительным преимуществом оператора case является его простота и ясность, особенно по сравнению с вложенными сценариями ‘bash if else’.
Чтобы полностью понять альтернативу `bash if else`, давайте погрузимся в синтаксис оператора case:
case $VAR in
– Этот сегмент конструкции case оценивает переменную$VAR
на соответствие определенным шаблонам до тех пор, пока не найдется совпадение.pattern1)
иpattern2)
– Это критерии для тестирования, и как только обнаруживается совпадение, соответствующий код (statement1
илиstatement2
) активируется.esac
– Завершает структуру case.
Представьте, что вы разрабатываете скрипт `bash if else`, где пользователи вводят названия своих стран, а в ответ скрипт показывает преобладающий язык этой страны.
1. Начните с создания файла с именем bash_case_demo.sh.
2. Включите предоставленный ниже код `bash if else` в ваш файл bash_case_demo.sh, затем сохраните и выйдите.
Последующий скрипт `bash if else` запросит у пользователя название его страны и, исходя из шаблонов `case`, напечатает основной язык, на котором говорят в указанной стране.
3. Чтобы протестировать этот скрипт ‘bash if else’ на практике, используйте следующую команду:
Вы увидите, что скрипт точно определяет язык в соответствии с выбранной страной пользователя.
Если указанная страна не соответствует заданным шаблонам, срабатывает стандартный (*) шаблон, в результате чего выводится “unknown”.

Завершение Условных выражений в Bash
В этом руководстве вы отправитесь в путешествие понимания ‘bash if else’ и других условных выражений в Bash. От простого выражения ‘if’ до сложных выражений ‘if-else’ и ‘case’, теперь у вас есть необходимые инструменты для эффективного написания сценариев Bash.
С этими основами ‘bash if else’ вы сможете более эффективно создавать сценарии Bash, сокращая возможные ошибки.
Но помните, что это лишь вершина айсберга. Bash предлагает огромное количество условных операторов. Возможно, стоит погрузиться в elif выражение и &&, операторы OR и || для более глубокого понимания. С посвящением, владение сценариями Bash вскоре станет достижимой целью!