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

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

Жанры

Linux для пользователя

Костромин Виктор Алексеевич

Шрифт:

[user]$ ls -l 0[2-4]??.*

5.7.8 Удаление специальных символов

После того, как все подстановки в командной строке сделаны, из нее еще удаляются все вхождения символов \, ` и ", которые служили для отмены специального значения других символов.

5.8. Shell как язык программирования

Как уже говорилось выше, для построения произвольных алгоритмов необходимо иметь операторы проверки

условий. Оболочка bash поддерживает операторы выбора if… then… else и case, а также операторы организации циклов for, while, until, благодаря чему она превращается в мощный язык программирования.

5.8.1 Операторы if и test (или [])

Конструкция условного оператора в слегка упрощенном виде выглядит так:

if list1 then list2 else list3 fi

где list1, list2 и list3 - это последовательности команд, разделенные запятыми и оканчивающиеся точкой с запятой или символом новой строки. Кроме того, эти последовательности могут быть заключены в фигурные скобки: {list}.

Оператор if проверяет значение, возвращаемое командами из list1. Если в этом списке несколько команд, то проверяется значение, возвращаемое последней командой списка. Если это значение равно 0, то будут выполняться команды из list2; если это значение не нулевое, будут выполнены команды из list3. Значение, возвращаемой таким составным оператором if, совпадает со значением, выдаваемым последней командой выполняемой последовательности.

Полный формат команды if имеет вид:

if list then list [elif list then list]… [else list] fi

(здесь квадратные скобки означают только необязательность присутствия в операторе того, что в них содержится).

В качестве выражения, которое стоит сразу после if или elif, часто используется команда test, которая может обозначаться также квадратными скобками []. Команда test выполняет вычисление некоторого выражения и возвращает значение 0, если выражение истинно, и 1 в противном случае. Выражение передается программе test как аргумент. Вместо того, чтобы писать

test expression,

 можно заключить выражение в квадратные скобки:

[expression].

Заметьте, что test и [- это два имени одной и той же программы, а не какое-то магическое преобразование, выполняемое оболочкой bash (только синтаксис [требует, чтобы была поставлена закрывающая скобка). Заметьте также, что вместо test в конструкции if может быть использована любая программа.

В заключение приведем пример использования оператора if:

if [-e textmode2.htm]; then

ls textmode*

else

pwd

fi

Об операторе test (или […]) надо бы поговорить особо.

5.8.2 Оператор test и условные выражения

Условные выражения, используемые в операторе test, строятся на основе проверки файловых атрибутов, сравнения строк и обычных арифметических сравнений. Сложные выражения строятся из следующих унарных или бинарных операций ("элементарных кирпичиков"):

• -a file

Верно, если файл с именем file существует.

• -b file

Верно, если file существует и является специальным файлом блочного устройства.

• -c file

Верно, если file существует и является специальным файлом символьного устройства.

• -d file

Верно, если file существует и является каталогом.

• -e file

Верно, если файл с именем file существует.

• -f file

Верно, если файл с именем file существует и является обычным файлом.

• -g file

Верно, если файл с именем file существует и для него установлен бит смены группы.

• -h file или -L file

Верно, если файл с именем file существует и является символической ссылкой.

• -k file

Верно, если файл с именем file существует и для него установлен "sticky'' bit.

• -p file

Верно, если файл с именем file существует и является именованным каналом (FIFO).

• -r file

Верно, если файл с именем file существует и для него установлено право на чтение

• -s file

Верно, если файл с именем file существует и его размер больше нуля.

• -t fd

Верно, если дескриптор файла fd открыт и указывает на терминал.

• -u file

Верно, если файл с именем file существует и для него установлен бит смены пользователя.

• -w file

Верно, если файл с именем file существует и для него установлено право на запись.

• -x file

Верно, если файл с именем file существует и является исполняемым.

• -O file

Верно, если файл с именем file существует и его владельцем является пользователь, на которого указывает эффективный идентификатор пользователя.

• -G file

Верно, если файл с именем file существует и принадлежит группе, определяемой эффективным идентификатором группы.

• -S file

Верно, если файл с именем file существует и является сокетом.

• -N file

Верно, если файл с именем file существует и изменялся с тех пор, как был последний раз прочитан.

• file1 -nt file2

Верно, если файл file1 имеет более позднее время модификации, чем file2.

• file1 -ot file2

Верно, если файл file1 старше, чем file2.

• file1 -ef file2

Верно, если файлы file1 и file2 имеют одинаковые номера устройств и индексных дескрипторов (inode).

• -o optname

Верно, если задействована опция оболочки optname. Пояснения см. на странице man bash.

• -z string

Верно, если длина строки равна нулю.

• -n string

Верно, если длина строки не равна нулю.

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

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Путь Шамана. Шаг 5: Шахматы Кармадонта

Маханенко Василий Михайлович
5. Мир Барлионы
Фантастика:
фэнтези
рпг
попаданцы
9.34
рейтинг книги
Путь Шамана. Шаг 5: Шахматы Кармадонта

Изгой. Пенталогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
9.01
рейтинг книги
Изгой. Пенталогия

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Сиротка 4

Первухин Андрей Евгеньевич
4. Сиротка
Фантастика:
фэнтези
попаданцы
6.00
рейтинг книги
Сиротка 4

Кодекс Охотника. Книга XV

Винокуров Юрий
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XV

Пятничная я. Умереть, чтобы жить

Это Хорошо
Фантастика:
детективная фантастика
6.25
рейтинг книги
Пятничная я. Умереть, чтобы жить

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Sos! Мой босс кровосос!

Юнина Наталья
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Sos! Мой босс кровосос!

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Возвышение Меркурия. Книга 5

Кронос Александр
5. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 5

Столичный доктор. Том III

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