Пример Bash If-Then-Else

Bash If Then Else Example



В этом уроке мы увидим, как мы можем использовать операторы If-Then-Else в сценариях среды Bash, которые мы пишем. Операторы If-Then-Else - полезный инструмент, позволяющий определить путь действия сценария при выполнении некоторых условий. Давайте посмотрим, каков синтаксис операторов If-Then-Else:

еслиНЕКОТОРЫЕ-КОМАНДЫ;
тогдаТОГДА-КОМАНДЫ;
ещеELSE-КОМАНДЫ;
быть

В показанной выше команде, если обнаружено, что НЕКОТОРЫЕ-КОМАНДЫ истинны или его статус возврата равен 0, будут выполнены ТОГДА-КОМАНДЫ. Если это не так, выполняются ELSE-КОМАНДЫ. В НЕКОТОРЫХ КОМАНДАХ мы обычно выполняем сравнение строк или значений в виде целых чисел. Мы также можем выполнять множество операций с файлами. Давайте рассмотрим несколько примеров основных команд, которые используются в основном при работе с файловыми условиями:







Начальный Имея в виду
[ -к ] Возвращает истину, если ФАЙЛ существует.
[-b] Возвращает истину, если ФАЙЛ существует и является специальным файлом блока.
[-c] Возвращает истину, если ФАЙЛ существует и является специальным символьным файлом.
[-d] Возвращает истину, если ФАЙЛ существует и является каталогом.
[ -А также ] Возвращает истину, если ФАЙЛ существует.
[-f] Возвращает истину, если ФАЙЛ существует и является обычным файлом.
[ -грамм ] Возвращает истину, если ФАЙЛ существует и его бит SGID установлен.
[-h] Возвращает истину, если ФАЙЛ существует и является символической ссылкой.
[-k] Возвращает истину, если ФАЙЛ существует и установлен бит закрепления.
[ -п ] Возвращает истину, если ФАЙЛ существует и является именованным каналом (FIFO).
[ -р ] Возвращает истину, если ФАЙЛ существует и доступен для чтения.
[-s] Возвращает истину, если ФАЙЛ существует и имеет размер больше нуля.
[-t] Возвращает истину, когда файловый дескриптор FD открыт и ссылается на терминал.
[-u] Возвращает истину, если ФАЙЛ существует и его бит SUID (установленный идентификатор пользователя) установлен.
[ -в ] Возвращает истину, если ФАЙЛ существует и доступен для записи.
[-Икс] Возвращает истину, если ФАЙЛ существует и является исполняемым.
[-O] Возвращает истину, если ФАЙЛ существует и принадлежит действующему идентификатору пользователя.
[ -ГРАММ ] Возвращает истину, если ФАЙЛ существует и принадлежит действующему идентификатору группы.
[-THE] Возвращает истину, если ФАЙЛ существует и является символической ссылкой.
[-N] Возвращает истину, если ФАЙЛ существует и был изменен с момента последнего чтения.
[-S] Возвращает истину, если ФАЙЛ существует и является сокетом.

THEN-COMMANDS и ELSE-COMMANDS могут быть любыми допустимыми операциями UNIX или любой исполняемой программой. Обратите внимание, что тогда а также быть Команды разделяются точкой с запятой, поскольку они считаются полностью отдельными элементами скрипта.



Простой пример If-Then-Else

Давайте начнем наш урок с очень простого примера с операторами If-Then-Else.
Вот пример программы:



Если пример

Если пример





Вот результат, который мы видим, когда запускаем наш скрипт:

$. ifelse1.sh
Ценности такие же!
$

Использование аргументов командной строки

Мы также можем использовать аргументы командной строки в наших сценариях и использовать количество аргументов и сами значения в качестве условия в определяемом нами операторе IF. Сначала мы определяем текстовый файл со следующим содержимым:



Меня зовут LinuxHint. Я люблю серверы, особенно Ubuntu. Они такие
терминальный!

Теперь мы можем написать сценарий, который определяет, встречается ли слово в текстовом файле или нет. Теперь давайте определим сценарий:

выбросил 'Находим 1 доллар из 2 долларов'
рукоятка 1 доллар 2 доллара
если [ $? -Родился 0 ]
тогда
выбросил '$ 1 не найден в файле $ 2'.
еще
выбросил '$ 1 найден в файле $ 2'.
быть
выбросил «Сценарий завершен».

Этот сценарий очень динамичный. Он считает слово, которое нужно найти, и файл для поиска из самой командной строки. Теперь мы готовы запустить наш скрипт:

. ifelse2.sh люблю hello.txt

Мы увидим такой вывод:

В поисках любвивhello.txt
любовь найденав файлhello.txt.
Скрипт завершен.

Проверка количества аргументов командной строки

Внутри оператора IF мы даже можем проверить, сколько аргументов командной строки было передано команде, чтобы мы могли действовать так же:

считатьзнак равно$ #
если [ ! $ count -gt 1 ]
тогда
выбросил «Недостаточно аргументов»
еще
выбросил 'Молодец!'
быть

Давайте запустим этот скрипт сейчас, мы увидим следующий результат:

Аргументы командной строки

Аргументы командной строки

Утверждения If-Then-Elif-Else

Мы также можем иметь несколько операторов IF в одном блоке, чтобы сузить путь решения, который наша программа принимает для выполнения определенных нами команд. Вот синтаксис для определения нескольких операторов IF в наших сценариях:

еслиТЕСТ-КОМАНДЫ;
тогда
РЕЗУЛЬТАТ-КОМАНДЫ;
Элиф
ДРУГИЕ КОМАНДЫ;
тогда
ДРУГОЙ РЕЗУЛЬТАТ-КОМАНДЫ;
еще
АЛЬТЕРНАТИВНЫЕ КОМАНДЫ;
быть

Это выглядит довольно знакомо, и за ним легко следить. Давайте определим простой пример, чтобы установить, как работает дерево:

считатьзнак равно$ #
если [ $ count -eq 1 ]
тогда
выбросил «Найден только один аргумент».
Элиф [ $ count -eq 2 ]
тогда
выбросил «Лучше, если найдены два аргумента».
еще
выбросил «Хорошая работа, много аргументов найдено!»
быть

Вот что мы получаем с помощью этой команды:

Пример If Then Elif Else

Пример If Then Elif Else

Использование кейсов

Операторы IF-ELSE полезны, когда у вас есть большой список опций, которые нужно выбрать. Но в случае, если вы хотите выполнить действие только в нескольких случаях точного совпадения с результатом, мы также можем использовать операторы CASE в сценариях Bash. Его синтаксис выглядит так:

кейсВЫРАЖЕНИЕвДЕЛО 1)КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ;
CASE2)КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ;
CASE2)КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ;
...)КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ;
*)КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ;
esac

Последний вариант со знаком * действует как вариант по умолчанию и будет выполнен, когда ни один из указанных выше вариантов не окажется подходящим.

Давайте быстро построим простой пример, используя операторы CASE:

кейс '$ 1' в
1)
выбросил «Значение равно 1.»
;;
2)
выбросил «Значение 2».
;;
3)
выбросил «Значение 3».
;;
*)
выбросил 'Другое значение прошло'.
esac

Каждый оператор CASE завершается символом ;; (двойные точки с запятой). Вот что мы получаем с помощью этой команды:

CASE пример

CASE пример

Заключение

В этом уроке мы рассмотрели, как мы можем использовать операторы IF-ELSE, IF-THEN-ELIF и CASE в сценариях Bash, которые мы определяем для выполнения определенных действий на основе значений, которые существуют в наших программах или переданы пользователем с помощью позиционного параметры.