Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Программирование сценариев для интерпретатора shell




ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №4

Программирование сценариев для интерпретатора shell

Цель – получить начальные навыки

Краткие теоретические сведения

ЭЛЕМЕНТЫ ЯЗЫКА SHELL

Последовательность команд записанная в текстовый файл, для интерпретатора shell называют командным сценарием (shell script — отсюда жаргонное "скрипт" или "шэльный скрипт"). По сути дела, интерпретатор реализует язык программирования высокого уровня. На этом языке администраторы могут осуществлять управление вычислительной системой (что, в общем-то, они и делают).

Запуск сценариев на исполнение

Коль скоро shell — это еще и язык программирования, уместно начать его освоение со знаменитой программы "Hello world!" Итак, с помощью любого текстового редактора создадим файл скажем, hello.sh. В него поместим одну строку:

echo Hello world!

Обратите внимание, что последним символом в командном сценарии должен быть символ перевода строки. Ведь, чтобы интерпретатор shell выполнил команду, введенную в командной строке, нужно нажать клавишу <Enter>, не так ли?

Выполнить сценарий в текущем экземпляре shell можно командой запуска оболочки shell с параметром. Например:

sh hello.sh

Переменные и параметры сценариев

1)Переменная

Переменная вводится операцией присваивания, которая имеет вид

name=value

Операция присваивает переменной name последовательность символов определенных значением value. В языке нет понятия типа, переменные могут иметь только символьные значения. Значение value может быть пустым. Подстановка значения (расширение переменной) происходит только тогда когда переменная используется с префиксом $ или в форме ${name}. Если для переменной задается значение, содержащее пробелы, то его нужно заключить в кавычки (одинарные или двойные)

2) Параметры

Параметры это некоторые объекты имеющие значение. QNX shell поддерживает три вида параметров:

- позиционные параметры;

- специальные параметры;

- именованные переменные (переменные, рассмотренные в п.п.1))

Позиционные параметры - это все параметры, специфицированные в командной строке shell и получающие значения при запуске shell. Позиционные параметры обозначаются комбинацией символа $ и числа 0-9 т.е. $1- означает первый параметр; $2 - означает второй параметр, и т.д.

Позиционные параметры могут быть также назначены командой set (встроенная команда shell).

Специальные параметры обеспечивают общедоступный сервис при программировании shell сценариев. Используются следующие виды специальных параметров:

$@ - последовательность значений всех позиционных параметров, начиная с первого, если расширение параметров происходит внутри строки в кавычках, эта последовательность рассматривается как множество операндов;

$* - последовательность значений всех позиционных параметров, начиная с первого, если расширение параметров происходит внутри строки в кавычках, эта последовательность рассматривается как один операнд;

$# - число позиционных параметров;

$? - выходной статус последней исполненной команды (0 –нормальное завершение);

$$ - идентификатор процесса введенного shell;

$! - идентификатор процесса выполняющего последнею асинхронную команду;

$0 - имя shell сценария (или интерпретатора shell).

set команда

set [option] [-o option name]... [argument...]

set [option] [+o option name]... [argument...]

set --

set команда устанавливает и сбрасывает значения позиционных параметров определенных полями argument. Вариант set-- сбрасывает значения всех позиционных параметров.

ГРАМАТИКА ЯЗЫКА SHELL

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

1.2.1. ОДИНОЧНЫЕ КОМАНДЫ.

Это любая внешняя или встроенная команда или операция присваивания за которой следует необязательная переадресация ввода/вывода.

1.2.2. КОНВЕЙЕРЫ КОМАНД.

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

1.2.3. СПИСКИ КОМАНД.

Один или несколько конвейеров соединенных управляющими операциями ";" "&" "&&" "||" образуют список команд. Функции операций:

; - последовательное выполнение конвейеров;

& - асинхронное выполнение; оба конвейера выполняются асинхронно не дожидаясь завершения друг друга;

&& - конвейер стоящий после "&&" выполняется только в том случае, если предшествующий конвейер вырабатывает нулевое значение статуса("истина"); || -конвейер стоящий после "||" выполняется только в том случае, если конвейер стоящий до "||", вырабатывает ненулевое значения статуса ("ложь").

1.2.4. КОМАНДНЫЕ ПОДСТАНОВКИ.

Командные подстановки позволяют вместо команды подставить выходное сообщение данной команды; имя команды заключается в круглые скобки которым предшествует символ "$":

$(command)

1.2.5. МАНИПУЛЯЦИЯ С ИМЕНАМИ ФАЙЛОВ.

Для манипуляции с именами файлов используют три символа "*" "?" []. Если один или несколько из этих символов используется в командной строке, каждое слово содержащее символ трактуется как шаблон который заменяется набором именвключающих данный образ.

* - заменяет любую символьную строку;

? - заменяет один символ в строке;

[...] заменяет один символ который находиться в лексическом интервале

указанном в скобках.

Пример, [a-c] - один символ заменяется каждым символом из интервала a-c;

Вариантом данной конструкции является использования функции дополнения "!".

Пример [!abc] - один символ заменяется всеми символами за исключением a b c.

1.2.1. ВСПОМОГАТЕЛЬНЫЕ КОМАНДЫ

КОМАНДА test.

test expression [expression]

test команда вычисляет выражение и возвращает нулевой статус если "истина" и ненулевой статус если "ложь". Эта команда обычно используется в управляющих конструкциях if, while.

Следующие выражения допустимы (выборочно):

-r file - файл существует и доступен по чтению;

-w file - файл существует и доступен по записи;

-x file - файл существует и доступен по исполнению;

-f file - файл есть регулярный файл;

-d file - файл есть директорий;

file1 -ot file2 - файл1 старше чем файл2;

string - строка не пустая;

string1 = string2 - строка1 равна строке2;

string1!= string2 - строка2 не равна строке2;

num1 -eq num2 - число1 равно числу2;

num1 -ne num2 - число1 не равно числу2;

num1 -ge num2 - число1 больше или равно числу2;

num1 -gt num2 - число1 больше числа2;

num1 -le num2 - число1 меньше или равно числу2;

num1 -lt num2 - число1 меньше числа2

Возможны также комбинации выражений связанные логическими операциями:

expr -o expr - логическое "ИЛИ";

expr -a expr - логическое "И";

!expr - логическое отрицание;

(expr) - группировка.

КОМАНДА read.

read [-r] var...

Команда read читает строку из стандартного устройства ввода (консоли), строка состоит из нескольких слов разделенных допустимыми разделителями. Первое слово назначается к переменной var, второе слово ко второй переменной var и так далее.

Если специфицирована опция -r то символ "\" трактуется, как и любой другой символ, в противном случае он считается escape-символом.

Переменные в интерпретаторе shell имеют строковый тип, но есть средство (команда expr) позволяющее выполнять арифметические операции над текстовыми переменными, заданными в виде целых чисел.

Упражнения

УПРАЖНЕНИЕ 2.1.

var=abcd

xy=$var+4

xyz=${xy}4

var2=’ab c de’

y=$var2-5

print $var $xy $xyz $y

Вместо команды print в равной мере можно использовать команду echo.

read r t y

1 2 3 4

print $r $t $y

print $y

УПРАЖНЕНИЕ 2.2.

set --

print $#

set a b c

print $#

print $@ $*

print $0

print $?

print $$

ls abc

print $?

УПРАЖНЕНИЕ 2.3.

Прокомментируйте результат в отчете.

print $(date)

print $(ls)

cd /home/g(номер вашей группы)

ls

rm d[!i]*; ls

rm e?; ls

УПРАЖНЕНИЕ 2.4.

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

test 3 -gt 2 && use ls

test 3 -lt 2 && use ls

test 3 -lt 2 || use ls

test ab3 = ab2 || use ls

test ab3!= ab2 || use ls

составить и проверить пример для условия -r file.

УПРАЖНЕНИЕ 2.5.

use expr

x=50

y=40

a=$(expr $x + $y); print $a

a=$(expr $x / $y); print $a

a=$(expr $x - $y); print $a

a=$(expr $x ‘*’ $y); print $a

3. Содержание отчёта

1. Номер практической работы.

2. Название и цель работы.

3. Краткое описание команд.

4. Результаты выполнения упражнений 2.1-2.5.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №5

Программирование сценариев для интерпретатора shell

Цель – изучить технологию программирования сценариев





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


Дата добавления: 2017-04-15; Мы поможем в написании ваших работ!; просмотров: 393 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Жизнь - это то, что с тобой происходит, пока ты строишь планы. © Джон Леннон
==> читать все изречения...

2374 - | 2150 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.