Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерные сети / Комп сети 6_awk.ppt
Скачиваний:
16
Добавлен:
22.02.2016
Размер:
168.96 Кб
Скачать

Здесь шаблон BEGIN используется для засылки значения в переменную N, чтобы не засорять конец программы кавычками.

Основная трудность во всех этих примерах состоит не в том, что бы следить

за кавычками ( хотя это дело очень хлопотливое), а в том, что программы,

составленные таким образом, могут читать только свой стандартный входной поток.

31

Здесь нет никаких возможностей

передать им сразу и параметр N и произвольно длинный список имен

файлов.

Для этого необходима определенная техника программирования на языке shell.

32

Функции

Функции могут использоваться в любом месте, где может применяться оператор- действие.

Функции имеют свободный формат, но должны разделяться точками с запятой или символами новой строки.

Синтаксис определения функции следующий:

function Имя(Список_аргументов) {Тело функции}

При объявлении функции в этой части

Имя(Список нет пробела.

33

Список аргументов идет через запятые. Это переменные, что используются внутри функции.

Тело функции – это один или несколько операторов-действия.

Функции вызываются из обычного оператора- действия.

ВНИМАНИЕ!

Левая скобка в списке параметров при определении и при обращении должна быть непосредственно за именем функции. (Для встроенных функций это

может быть не так). 34

Параметры функции передаются по значению, то есть действительные

параметры копируются и передаются формальным параметрам.

Пример.

 

Cat > is.awk

 

function is(x)

{ x=8 }

{

x=5;

print x;

 

is(x);

print x;

}

 

 

awk –f is.awk

 

35

Результат будет: 5 5

Это происходит потому, что вызов функции is(x) копирует значение в локальную переменную внутри самой функции.

Начальное значение равно 5 и оно не переопределяется значением 8.

Но если оператор поставить внутри функции, то будет напечатано и значение 8.

36

Локальные переменные

Им не уделено особого внимания в awk. Поэтому они должны быть перечислены в списке параметров.

Список локальных переменных

отделяется от параметров пробелом. Например:

function is(x A,B)

Здесь x - параметр подпрограммы, а A и B локальные переменные. Они существуют и имеют смысл до тех пор, пока функция is активна.

37

Глобальные переменные

Любая переменная, что не входит в список параметров, является глобальной.

Пример:

function is(x) {x=8; a=3}

{x=5; a=2; print “x= “ x “a = “ a; is(x); print “x= “ x “a = “ a;

}

При этом будет выдано: x= 5 a = 2

x= 5 a = 3

38

Обращение к функциям

-Функции могут вызывать друг друга.

-Обращение к функции может быть

рекурсивным.

В некоторых версиях awk можно использовать слово func вместо function.

Встроенная функция system

Эта функция позволяет использовать команды UNIX и shell.

39

Для этого необходимо выполнить: system (value)

где value – строка, что будет вводиться из

командной строки UNIX. Текст должен быть в двойных кавычках. Переменные должны идти через пробел для конкатенации.

Пример:

Файл file.me содержит: file.1

file.2

file.3

40

Соседние файлы в папке Компьютерные сети