Руководство для начинающих по написанию сценариев Shell 4 Условия и заявления If-Then
В нашем руководстве по написанию сценариев оболочки мы рассмотрели достаточно основ, чтобы вы могли спокойно экспериментировать. В этой части мы рассмотрим некоторые более интересные вещи, такие как условия и заявления «если тогда».
Какие условия?
На повседневном языке мы говорим, что условия - это требования, которые должны быть выполнены, чтобы что-то произошло. Чтобы мой ноутбук мог подключаться к Интернету, необходимо выполнить несколько условий, таких как наличие интернет-провайдера, модем и / или маршрутизатор, мой ноутбук и т. Д. Это довольно просто, и если таковые имеются из тех требований не выполнено, результат - мой ноутбук, подключающийся к Интернету - не происходит.
Условия в области вычислительной техники работают аналогично. Мы можем проверить, соответствует ли строка другой строке, не совпадает ли она с другой строкой, или вообще существует ли она. Точно так же мы можем проверить числовые аргументы, чтобы увидеть, является ли один большим, меньшим или равным другому. Чтобы что-то произошло после выполнения условий теста, мы используем операторы if-then. Их формат довольно прост.
если СОСТОЯНИЕ
затем
command1
command2
...
commandn
фи
Если заявления
Давайте запустим небольшой тестовый скрипт,?
если тест $ 1 -gt $ 2
затем
echo «1 доллар больше 2 долларов»
фи
Вы заметите, что только когда это условие выполнено, скрипт выполнит следующую команду. В противном случае оператор «if» завершится. Если после оператора «if» есть какие-либо команды, они будут выполняться как обычно. Я добавил следующую строку в конец нашего скрипта, чтобы проиллюстрировать это:
echo «Это идет после оператора if»
Вот некоторые другие числовые операторы, которые вы можете попробовать:
- -экв: равно
- -ne: не равно
- -lt: меньше чем
- -le: меньше или равно
- -GT: больше чем
- -ge: больше или равно
Тестовые строки
Теперь, если мы изменим первую строку нашего скрипта так:
если тест $ 1 = $ 2
тогда условие проверит, равны ли два. Здесь есть одна загвоздка! Использование знака равенства (=) сравнивает две строки, а не числа. Если вы хотите сравнить числа, вам нужно использовать оператор «-eq» аналогично тому, как мы использовали «-gt» выше.
Теперь давайте сделаем еще одну модификацию:
если тест $ 1! = $ 2
Включение восклицательного знака (!) Действует как модификатор «не». То есть он запускает следующую команду только тогда, когда две строки не совпадают.
Вот список некоторых более строковых тестов, которые вы можете использовать:
- строка: использование только аргумента само по себе проверяет, не является ли строка пустой (нулевой) или не определена каким-либо образом
- -n строка: это проверит, если строка не пуста и определена
- -Строка z: это проверит, является ли строка пустой и определена таким образом
О чем еще, если?
Я признаю, что заголовок раздела определенно был плохим каламбуром. Хорошо, мы знаем, как выполнить команду, если проверка верна, но что, если мы хотим выполнить другую команду, если она ложна? Мы можем легко соединить их вместе, добавив раздел к нашим операторам «если-то» - «еще»!
если СОСТОЯНИЕ
затем
command1
command2
...
commandn
еще
command1
command2
...
commandn
фи
Давайте соберем простой скрипт.
Там все с правильным отступом. Если вы посмотрите внимательно, вы заметите, что мы использовали квадратные скобки ([и]) вместо команды test. Они функционально эквивалентны для наших целей, и у вас гораздо больше шансов увидеть квадратные скобки по разным причинам, поэтому мы будем использовать их с этого момента.
Вот как будет выглядеть вывод:
Это так просто!
Что мне теперь делать?
Теперь, когда вы знаете, как использовать операторы if-then-else, вы можете запускать сценарии, которые могут выполнять тесты. Например, вы можете запустить скрипт, который вычислит хеш md5 файла, а затем сравнит его с тем, который вы скачали в файл, чтобы увидеть, совпадают ли они с ним..
Для некоторых бонусных баллов вы можете создать скрипт, который имеет цикл for, но использует условия теста вместо чтения строк из файла списка…
Мы переходим к некоторым более интересным частям в нашем Руководстве по написанию сценариев оболочки для начинающих. Если вы пропустили предыдущие уроки, вот быстрый список для вас, чтобы проверить:
- Основы сценариев оболочки
- Использование для циклов
- Более основные команды
- Каковы различия между оболочками Linux?
- Как использовать основные регулярные выражения
Если вы создали или использовали сценарии, в которых используются условия тестирования, операторы if-then-else и циклы for, поделитесь с нами комментариями!