Пример: печать текущего каталога Программа 2.6 реализует очередную версию команды UNIX pwd. Размер буфера определяется значением параметра МАХ_РАТН, однако проверка ошибок все равно предусмотрена, чтобы проиллюстрировать работу функции GetCurrent-Directory.Программа 2.6. pwd: печать
3.6.6 init.c #include "hoc.h"#include "y.tab.h"#include <math.h>extern double Log(), Log10(), Sqrt(), Exp(), integer();static struct { /* Keywords */ char *name; int kval;} keywords[] = { "if", IF, "else", ELSE, "while", WHILE, "print", PRINT, 0, 0,};static struct { /* Constants */ char *name; double eval;} consts[] = { "PI", 3.14159265358979323846, "E", 2.71828182845904523536, "GAMMA", 0.57721566490153286060, /* Euler */ "DEG",
3.2.3. init С помощью LILO запускается программа загрузки ОС, которая настраивает все необходимое оборудование, загружает драйверы и монтирует жесткие диски. По окончании этого процесса с винчестера запускается программа init, которая завершает загрузку.У программы init, как и у
16.6. Сценарий запуска сервера Apache /etc/init.d/httpd Стандартный сценарий запуска веб-сервера Apache устанавливается из того же пакета, что и сам сервер, В версии Apache 2.0 можно вызывать сценарий запуска со следующими параметрами:? start — запуск сервера;? stop — завершение работы
Пример 2-1. cleanup: Сценарий очистки лог-файлов в /var/log # cleanup# Для работы сценария требуются права root.cd /var/logcat /dev/null > messagescat /dev/null > wtmpecho "Лог-файлы очищены."Здесь нет ничего необычного, это простая последовательность команд, которая может быть набрана в командной строке с
Пример 11-23. Сценарий, завершающий себя сам с помощью команды kill #!/bin/bash# self-destruct.shkill $$ # Сценарий завершает себя сам. # Надеюсь вы еще не забыли, что "$$" -- это PID сценария.echo "Эта строка никогда не будет выведена."# Вместо него на stdout будет выведено сообщение "Terminated".exit 0# Какой
Пример 12-5. copydir, копирование файлов из текущего каталога в другое место, с помощью xargs #!/bin/bash# Копирует все файлы из текущего каталога# в каталог, указанный в командной строке.if [ -z "$1" ] # Выход, если каталог назначения не задан.then echo "Порядок использования: `basename $0` directory-to-copy-to"
Пример 12-25. Исследование каталога /usr/X11R6/bin #!/bin/bash# Что находится в каталоге /usr/X11R6/bin?DIRECTORY="/usr/X11R6/bin"# Попробуйте также "/bin", "/usr/bin", "/usr/local/bin", и т.д.for file in $DIRECTORY/*do whatis `basename $file` # Вывод информации о файле.doneexit 0# Вывод этого сценария можно перенаправить в файл:# ./what.sh >>whatis.db# или
Пример 29-1. Сценарий, содержащий ошибку #!/bin/bash# ex74.sh# Этот сценарий содержит ошибку.a=37if [$a -gt 27 ]then echo $afi exit 0В результате исполнения этого сценария вы получите такое сообщение:./ex74.sh: [37: command not foundЧто в этом сценарии может быть неправильно (подсказка: после ключевого слова
Пример 33-6. Сценарий (бесполезный), который вызывает себя сам #!/bin/bash# recurse.sh# Может ли сценарий вызвать себя сам?# Да, но есть ли в этом смысл?RANGE=10MAXVAL=9i=$RANDOMlet "i %= $RANGE" # Генерация псевдослучайного числа в диапазоне 0 .. $MAXVAL.if [ "$i" -lt "$MAXVAL" ]then echo "i = $i" ./$0 # Сценарий запускает
Пример 33-7. Сценарий имеющий практическую ценность), который вызывает себя сам #!/bin/bash# pb.sh: телефонная книга# Автор: Rick Boivie# используется с его разрешения.# Дополнен автором документа.MINARGS=1 # Сценарию должен быть передан, по меньшей мере, один
Пример H-2. viewdata.sh: Результат преобразования VIEWDATA.BAT в сценарий командной оболочки #!/bin/bash# Результат преобразования пакетного файла VIEWDATA.BAT в сценарий командной оболочки.DATAFILE=/home/bozo/datafiles/book-collection.dataARGNO=1# @ECHO OFF Эта команда здесь не нужна.if [ $# -lt "$ARGNO" ] # IF !%1==! GOTO VIEWDATAthen less