Чтение онлайн

на главную - закладки

Жанры

Linux-сервер своими руками

Колисниченко Денис Николаевич

Шрифт:

Общий синтаксис конструкции if-fi:

if список1 then

 список2

elif

 список3

then

 список4

else

 список3

fi

Конструкция if-fi работает так же, как и в других языках программирования. Если список1 (условие) истинный, выполняется список1, иначе выполняется список3 и проверяется его истинность и т.д. Допускается неограниченная вложенность операторов if. Например:

if uuencode myfile myfile > myfile.uu; then

 echo "Успешное
конвертирование";

else

 echo "Ошибка";

fi

Можно использовать сокращенный вариант:

if список1 then

 список2

fi

Например:

if [ $? –ne 0 ]; then echo "Ошибка. См. файл протокола"; fi;

Вместо списка команд удобно использовать команду test или выражение [условие]. Например, следующие выражения аналогичны:

test –e /etc/passwd

[-е /etc/passwd]

И первое, и второе выражение проверяют существование файла /etc/passwd. Другие опции команды test представлены в табл. 19.38.

Опции команды test Таблица 19.38

Опция Возвращаемое значение и описание
– d файл Истина, если файл существует и является каталогом
– е файл Истина, если файл существует
– f файл Истина, если файл существует и является простым файлом
– k файл Истина, если файл существует и для него установлен бит односторонней операции
– L файл Истина, если файл существует и является ссылкой
– r файл Истина, если файл существует и доступен для чтения
– s файл Истина, если файл существует и его размер больше 0
х файл Истина, если файл существует и является исполнимым
– w файл Истина, если файл существует и доступен для записи
– о файл Истина, если файл существует и принадлежит данному пользователю
– z строка Истина, если длина строки равна 0
– n строка Истина, если длина строки не равна 0

Команда test, в случае успешного завершения, возвращает значение истина, то есть 0 — успешное завершение. Если в скобках стоит непустое слово, test возвратит тоже 0, например:

[ word ]; echo $?

0

[]; echo $?

1

В первом случае возвращается истина (true), на экран выводится ноль — код удачного (безошибочного) завершения программы. Во втором случае на экран выводится единица — команда test возвратила значение ложь (false). Сравнение строк осуществляется следующим образом: выражения str1 = str2 или str1 == str2 истинны, когда строки str1 и str2 равны. Обратите внимание: между двумя символами равно не должно быть пропуска!

Символ ! инвертирует любое условие команды test, например, выражение str1 != str2 будет истинным, когда строки str1 и str2 не равны между собой. Символ ! является символом логической

операции NOT (отрицание). Кроме этого символа, можно использовать опции команды –о и –а, которые обозначают логические операции ИЛИ (OR) и И (AND). Например:

str="word"; export str; ["$str" –a –f /etc/passwd]; echo $?

0

str=""; export str; ["$str" –a –f /etc/passwd]; echo $?

1

В первом случае непустая строка str возвращает истину, опция —f возвращает также истину, потому что файл /etc/passwd существует всегда. Результат операции И: истина И истина = истина, поэтому на экране вы увидите 0.

Во втором случае пустая строка str возвратит ложь, а опция –f возвращает истину. Результат операции И: ложь И истина = ложь. Если вы забыли законы логики, освежите свои знания с помощью табл. 19.39.

Логические операции Таблица 19.39

AND True False OR True False XOR True False
True True False True True True  True False True
False False False False True False False True False

Операция XOR — это исключающее ИЛИ. Данная операция не используется при создании сценариев с помощью интерпретатора bash.

Для сравнения целых чисел используются опции команды test,приведенные в табл. 19.40.

Сравнение целых чисел Таблица 19.40

Опция Описание
– eq Равно
– ne Не равно
– It Меньше
– gt Больше
– le Меньше или равно
– ge Больше или равно

Интерпретатор bash воспринимает строки, как целые числа. Если нужно обнулить строку, то это достигается таким присваиванием: х=0.

Пример.

х=124 ; export х ; [ 111 –It "$х" ] ; echo $?

0

Поскольку 111 меньше, чем 124, на экране вы увидите 0 (истина).

Примечание. Во всех примерах, вы, наверное, заметили использование команды export. Это необходимо для того, чтобы порожденному процессу (не забывайте: test — это отдельная программа) переменнаях была доступна.

Теперь, когда мы уже знакомы с конструкциями test и if, рассмотрим небольшой пример, демонстрирующий вложенность операторов if и использование команды test. Пример приведен в листинге 19.2.

Листинг 19.2. Пример вложенности операторов

echo –n "Какую оценку ты получил сегодня по программированию? "

read x

if [ $х = 5 ]

 then echo "Отлично !"

elif [ $х = 4 ]

 then echo "Хорошо"

elif [ $x = 3 ]

 then echo "Удовлетворительно"

elif [ $x = 2 ]

 then echo "Надо бы пересдать"

Поделиться:
Популярные книги

Граф Суворов 7

Шаман Иван
7. Граф Суворов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Граф Суворов 7

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Изгой Проклятого Клана

Пламенев Владимир
1. Изгой
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Изгой Проклятого Клана

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Газлайтер. Том 3

Володин Григорий
3. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 3

Бестужев. Служба Государевой Безопасности. Книга 5

Измайлов Сергей
5. Граф Бестужев
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга 5

Ученик

Губарев Алексей
1. Тай Фун
Фантастика:
фэнтези
5.00
рейтинг книги
Ученик

Жена по ошибке

Ардова Алиса
Любовные романы:
любовно-фантастические романы
7.71
рейтинг книги
Жена по ошибке

Как я строил магическую империю 6

Зубов Константин
6. Как я строил магическую империю
Фантастика:
попаданцы
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 6

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Игра престолов

Мартин Джордж Р.Р.
Фантастика:
фэнтези
5.00
рейтинг книги
Игра престолов

Фараон

Распопов Дмитрий Викторович
1. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Фараон