Программирование командных файлов (в оболочке Shell)

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

В командном файле можно записать последовательность команд на исполнение.

Кроме этого можно написать не большой скрипт.

Некоторые возможности по написанию скрипта:

Условный оператор "IF"

Оператор вызова ("CASE")

Оператор цикла с перечислением ("FOR")

Оператор цикла с истинным условием ("WHILE")

Оператор цикла с ложным условием ("UNTIL")

Можно писать свои функции.

В каждой операционной системе есть более мощный скриптовый язык, основным для UNIX является PERL (хотя есть и другие, JScript, PHP и Python).

# Это комментарий.

## И это.

### И это тоже.

Команда test проверяет выполнение некоторого условия. С использованием этой (встроенной) команды формируются операторы выбора и цикла языка shell.

Два возможных формата команды:

test условие

или

[ условие ]

В shell используются условия различных "типов".

УСЛОВИЯ ПРОВЕРКИ ФАЙЛОВ:

-f file

файл "file" является обычным файлом;

-d file

файл "file" - каталог;

-с file

файл "file" - специальный файл;

-r file

имеется разрешение на чтение файла "file";

-w file

имеется разрешение на запись в файл "file";

-s file

файл "file" не пустой.

Примеры. Вводя с клавиатуры командные строки в первом случае получим подтверждение (код завершения "0"), а во втором - опровержение (код завершения "1"). "specific" - имя существующего файла.

[ -f specific ] ; echo $?

[ -d specific ] ; echo $?

УСЛОВИЯ ПРОВЕРКИ СТРОК:

str1 = str2

строки "str1" и "str2" совпадают;

str1 != str2

строки "str1" и "str2" не совпадают;

-n str1

строка "str1" существует (непустая);

-z str1

строка "str1" не существует (пустая).

Примеры.

x="who is who"; export x; [ "who is who" = "$x" ]; echo $?

x=abc ; export x ; [ abc = "$x" ] ; echo $?

x=abc ; export x ; [ -n "$x" ] ; echo $?

x="" ; export x ; [ -n "$x" ] ; echo $?


Задание 1:

Запустите Linux.

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

Поработайте с этими командами.

Напишите программу на Shell для резервирования каталога (каким архиватором, какой каталог и куда спросите у преподавателя).

Сделайте автоматический запуск этого скрипта (в /etc/crontab), для создания ежедневной, еженедельной и ежемесячной копии.

Задание 2

###

# if-3: Оценка достижений

echo -n " А какую оценку получил на экзамене?: "

read z

if [ $z = 5 ]

then echo Молодец !

elif [ $z = 4 ]

then echo Все равно молодец !

elif [ $z = 3 ]

then echo Все равно !

elif [ $z = 2 ]

then echo Все !

else echo !

fi

Задание 3.

###

# case-1: Структура "case".

# Уже рассматривавшийся в связи со

# структурой "if" пример проще и

# нагляднее можно реализовать с

# помощью структуры "case".

echo -n " А какую оценку получил на экзамене?: "

read z

case $z in

5) echo Молодец ! ;;

4) echo Все равно молодец ! ;;

3) echo Все равно ! ;;

2) echo Все ! ;;

*) echo ! ;;

esac

Задание 4.

###

# holding: Справочник.

# Для различных фирм по имени выдается

# название холдинга, в который она входит

for i

do

case $i in

ONE|TWO|THREE) echo Холдинг: ZERO ;;

MMM|WWW) echo Холдинг: Not-Net ;;

Hi|Hello|Howdoing) echo Холдинг: Привет! ;;

*) echo Нет такой фирмы ;;

esac

done

Задание 5.

###

# print-50: Структура "while"

# Расчет позволяет напечатать 50

# экземпляров файла "file-22"

n=0

while [ $n -lt 50 ] # пока n < 50

do

n=`expr $n + 1`

cat file-22 > /dev/lp

done

Задание 6.

###

# specific: Специальные параметры (переменные)

echo $0 - имя расчета

echo $? - код завершения

echo $$ - идентификатор последнего процесса

echo $! - идентификатор последнего фонового процесса

echo

echo $* - значения параметров, как строки

echo $@ - значения параметров, как слов

echo

set -au

echo $- - режимы работы интерпретатора

Контрольные вопросы:

1.Дайте определение команде test?

2. Принципы обработки прерывания Trap?

3. Операторы условий?

Содержание отчета:

1. Цель работы.

2.Ответы на контрольные вопросы.

3.Распечатка хода работы в электронном виде.

Практическая работа № 15

Наши рекомендации