Шрифт:
Далее в этой главе мы рассмотрим более подробно подстановку параметров.
Условия
Основа всех языков программирования — средства проверки условий и выполнение различных действий с учетом результатов этой проверки. Но прежде чем говорить об этом, давайте рассмотрим условные конструкции, которые можно применять в сценариях командной оболочки, а затем познакомимся с использующими их управляющими структурами.
Сценарий командной оболочки может проверить код завершения любой команды, вызванной из командной строки, включая сценарии, написанные вами. Вот почему так важно всегда включать в создаваемые вами сценарии команду exit с определенным значением.
На практике в большинстве сценариев широко используется команда
Эти команды в некоторых ранних оболочках UNIX вызывают внешнюю программу, но в более современных версиях их стараются делать встроенными. Мы вернемся к этому, когда будем рассматривать команды в следующем разделе.
Поскольку команда
Мы представим команду
To же самое можно записать следующим образом:
Код завершения команды
Имейте в виду, что вы должны вставлять пробелы между квадратной скобкой
Если вы предпочитаете помещать слово
Варианты условий, которые вы можете применять в команде
Таблица 2.4
| Варианты условий | Результат |
|---|---|
| Сравнения строк | |
| Строка1 = Строка2 | True (истина), если строки одинаковы |
| Строка1 != Строка2 | True (истина), если строки разные |
| – n Строка | True (истина), еслиСтрока не null |
| – z Строка | True (истина), еслиСтрока null (пустая строка) |
| Сравнения чисел | |
| Выражение1– eq Выражение2 | True (истина), если выражения равны |
| Выражение1– ne Выражение2 | True (истина), если выражения не равны |
| Выражение1– gt Выражение2 | True (истина), еслиВыражение1 больше, чемВыражение2 |
| Выражение1– ge Выражение2 | True (истина), еслиВыражение1 не меньшеВыражение2 |
| Выражение1– lt Выражение2 | True (истина), еслиВыражение1 меньше, чемВыражение2 |
| Выражение1– lе Выражение2 | True (истина), еслиВыражение1 не большеВыражение2 |
| ! Выражение | True (истина), еслиВыражение ложно, и наоборот |
| Файловый флаг | |
| – d файл | True (истина), еслифайл — каталог |
| – е файл | True (истина), еслифайл существует. Исторически, опция – e не была переносима на другие платформы, поэтому обычно применяется – f |
| – f файл | True (истина), еслифайл — обычный файл |
| – g файл | True (истина), если дляфайла установлен бит set-group-id |
| – r файл | True (истина), если файл доступен для чтения |
| – s файл | True (истина), если файл ненулевого размера |
| – u файл | True (истина), если дляфайла установлен бит set-user-id |
| – v файл | True (истина), еслифайл доступен для записи |
| – х файл | True (истина), если файл — исполняемый файл |
Вас могли заинтересовать непонятные биты set-group-id и set-user-id (также называемые set-gid и set-uid). Бит set-uid предоставляет программе права владельца, а не просто ее пользователя, бит set-gid предоставляет программе права группы. Эти биты устанавливаются командой
Мы немного сами себя обогнали, но далее следует пример тестирования состояния файла /bin/bash, так что вы сможете увидеть, как это выглядит на практике.