Сценарий просматривается интерпретатором команд в направлении сверху вниз. Перед выполнением сценария требуется воспользоваться командой chmod, устанавливающей право доступа на выполнение. Убедитесь в том, что правильно указан путь к сценариям, тогда для его выполнения достаточно будет указать имя файла сценария.
16.3. Выполнение сценария
Ниже рассматривается пример, который уже обсуждался ранее. В данном случае, файл называется cleanup.
$ pg cleanup
#!/bin/sh
#имя: cleanup
#это общий сценарий, выполняющий очистку echo "starting cleanup…wait"
rm /usr/local/apps/log/*.log
tail -40 /var/adm/messages /tmp/messages
rm /var/adm/messages
mv /tmp/messages /var/adm/messages
echo "finished cleanup"
Приведенный выше сценарий отменяет отображение сообщений /var/adm/ путем усечения файла сообщений. В задачи этого сценария также входит удаление всех журнальных файлов в каталоге /usr/local/apps/log.
Для выполнения сценария применим команду 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–сценарием.
Проверка условий
При создании сценария уточняется идентичность строк, права доступа к файлу или же выполняется проверка численных значений. На основе результатов проверки предпринимаются дальнейшие действия. Проверка обычно осуществляется с помощью команды 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 | Исполняемый файл |