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

ЖАНРЫ

Linux и UNIX: программирование в shell. Руководство разработчика
Шрифт:

Для выполнения сценария применим команду chmod:

$ chmod u+x cleanup

Чтобы запустить сценарий на выполнение, введите его название:

$ cleanup

При отображении сообщения об ошибке, например:

$ cleanup

sh: cleanup: command not found

воспользуйтесь командой: $ ./cleanup

Если перед выполнением сценария нужно указать путь доступа к нему или же сценарий сообщает, что не может обнаружить команду, достаточно в значение переменной path из файла .profile добавить каталог bin. При вводе следующей информации сначала убедитесь, что вы находитесь в каталоге $HOME/bin:

$ pwd

$ /home/dave/bin

Если последняя часть команды pwd включает название подкаталога /bin, его следует использовать при указании имени пути. Измените файл .profile и добавьте в файл .profile каталог $HOME/bin:

PATH=$PATH:$HOME/bin

В случае если подкаталог /bin отсутствует, создайте его; сначала удостоверьтесь, что находитесь в начальном каталоге.

$ cd $HOME

$ mkdir bin

После этого добавьте каталог bin в переменную PATH в файле .profile, затем заново инициализируйте файл .profile

$ . .profile

Теперь все должно получиться.

Если же проблемы остались, просмотрите главы 2 и 13. В этих главах содержатся сведения о командах find и xargs, а также о настройках переменных среды, которые окажутся полезными при создании и выполнении сценариев.

Все листинги книги являются полными. Чтобы запустить на выполнение сценарии, введите в файл команды, сохраните его на диске и выйдите из текстового редактора. Затем воспользуйтесь командой chmod для установки права выполнения. Теперь можно переходить к делу.

16.4. Заключение

Глава служит кратким введением в методику работы с shell–сценариями. Вероятно, вам пока нет необходимости подробно изучать вопросы, связанные с функционированием сценариев, вводом/выводом данных интерпретатора shell и т. п. Необходимые знания придут после внимательного изучения материала книги. Глава помогает пользователю уяснить, как начать работу с shell–сценарием.

ГЛАВА 17

Проверка условий

При создании сценария уточняется идентичность строк, права доступа к файлу или же выполняется проверка численных значений. На основе результатов проверки предпринимаются дальнейшие действия. Проверка обычно осуществляется с помощью команды test. Команда test используется для тестирования строк, проверки прав доступа к файлу и численных данных. Как будет показано в следующей главе, эта команда хорошо согласуется с условной конструкцией if, then, else.

В главе рассматриваются следующие темы:

• применение команды test для обработки файлов, строк и чисел;

• использование команды expr при проверке численных значений и строк. Команда expr выполняет проверку и вывод численных данных. Команды test

и expr с помощью кода завершения последней команды $? выводят на экран значение 0, если заданное условие выполняется, и 1, если условие не выполняется.

17.1. Проверка прав доступа к файлу

Основные форматы команды test:

test условие

или

[ условие ]

Обратите внимание, что с обеих сторон от условия обязательно остаются пробелы. При проверке права на доступ к файлу может применяться довольно много условий. В табл. 17.1 содержится перечень наиболее распространенных условий.

Таблица 17.1. Проверка прав доступа к файлу

– d

Каталог

– f

Обычный файл

– L

Символическая связь

– r

Файл для чтения

– s

Файл имеет ненулевой размер, он не пуст

– w

Файл для записей

– u

Файл имеет установленный бит suid

– x

Исполняемый файл

Чтобы проверить, установлено ли право записи для файла scores.txt, применяются оба метода проверки. При осуществлении проверки используется код завершения последней команды. Не забывайте о том, что возвращаемое нулевое значение свидетельствует о том, что условие выполняется, любое другое значение говорит о наличии ошибки.

$ ls -l scores.txt

– rw-r—г -l dave admin 0 May 15 11:29 scores.txt

$ [ -w scores.txt ]

$ echo $?

0

$ test -w scores.txt

$ echo $?

0

В обоих случаях отображается значение нуль, поэтому для данного файла установлены права записи. Теперь рассмотрим, является ли этот файл исполняемым.

$ [ -х scores.txt ]

$ echo $?

1

Нет, не является, что и следовало ожидать после изучения списка прав доступа для файла scores.txt.

В следующем примере проверяется существование каталога appsbin.

drwxr-xr-x 2 dave admin 1024 May 15 15:53 appsbin

$ [ -d appsbin ]

$ echo $?

0

Ответ утвердительный, каталог appsbin присутствует. Чтобы проверить, установлен ли бит suid, примените:

– rwsr-x--- 1 root root 28 Apr 30 13:12 xab

$ [ -u xab ]

$ echo $?

0

Из этого примера следует, что бит suid установлен.

17.2. Применение логических операторов при осуществлении проверки

Итак, проверка прав доступа к файлу была осуществлена, но иногда возникает необходимость в сравнении различных прав доступа. Чтобы реализовать подобную проверку интерпретатор shell предлагает три типа логических операторов;

– a

Логическое AND, возвращает истину, если обе части оператора принимают истинное значение

– o

Логическое OR, возвращает истину, если какая-либо из частей оператора может принимать истинное значение

Поделиться с друзьями: