Лабораторная работа №7 Инсталляция Linux icon

Лабораторная работа №7 Инсталляция Linux



НазваниеЛабораторная работа №7 Инсталляция Linux
страница4/5
Дата конвертации01.09.2012
Размер1.03 Mb.
ТипЛабораторная работа
1   2   3   4   5

Нет такой фирмы


Холдинг: Not-Net


183

Еще пример.

###

# subdir: Выдает имена всех поддиректориев

# директория с именем $dir
for i in $dir/*
do
if [ -d $i ]

then echo $i
fi

done

Следующий расчет иллюстрирует полезный, хотя и с долей
трюкачества, способ повторения одних и тех же действий
несколько раз. Переменная "i" принимает здесь пять значений: 1,
2, 3, 4, 5, но внутри цикла эта переменная отсутствует и поэтому
ее значение никакой роли не играет и ни чего не меняет. С таким
же успехом переменная "i" могла принимать значения, скажем ф о к у с, а в результате точно также было бы пять раз повторено
одно и то же вычисление содержимого цикла без изменений.

###

#print-5: Организации пятикратного выполнения
команды

for i in 1 2 3 4 5
do

cat file-22 > /dev/lp
done

Расчет "print-n" иллюстрирует еще одну полезную
возможность в использовании цикла "for". Здесь, после "for i...",
отсутствуют "in ..." и перечень имен, т.е. перечнем имен для "i"
становится перечень параметров, а следовательно количество
печатаемых экземпляров можно менять.

###

# print-n: Задание числа копий

# через параметры
for i
do

cat file-22 > /dev/lp
done

Смысл не изменится, если первую строку расчета записать
как

184

for i in $*

поскольку значение "$*" - есть список значений параметров.
Отметим различие в специальных переменных "$*" и "$@",
представляющих перечень параметров. Первый представляет
параметры, как строку, а второй, как совокупность слов.
Пусть командный файл "cmp" имеет вид:
for i in "$*"
do

echo $i
done
echo

for i in "$@"
do

echo $i
done
При вызове

cmp aa bb cc
на экран будет выведено
aa bb cc
aa
bb
cc

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

Структура "while", также обеспечивающая выполнение
расчетов, предпочтительнее тогда, когда неизвестен заранее
точный список значений параметров или этот список должен
быть получен в результате вычислений в цикле.
Оператор цикла "while" имеет структуру:
while условие
do

список команд
done

где "while" - служебное слово определяющее тип цикла с
истинным условием. Список команд в теле цикла (между "do" и
"done") повторяется до тех пор, пока сохраняется истинность
условия (т.е. код завершения последней команды в теле цикла
равен "О") или цикл не будет прерван изнутри специальными

185

командами ("break", "continue" или "exit").
При первом входе в
цикл условие должно выполняться.

###

# 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

Обратим внимание на то, что переменной "n" вначале
присваивается значение 0, а не пустая строка, так как команда
"expr" работает с shell-переменными как с целыми числами, а не
как со строками.

n='ехрг $n + 1`

т.е. при каждом выполнении значение "n" увеличивается на
1.

Как и вообще в жизни, можно реализовать то же самое и
сложнее. Расчет "pr-br" приведен для иллюстрации бесконечного
цикла и использования команды "break", которая обеспечивает
прекращение цикла.

###

# pr-br: Структура "while" с "break"

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

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

while true
do

if [ $n -lt 50 ] # если n < 50
then n='expr $n + 1`
else break
fi

cat file-22 > /dev/lp
done

Команда "break [n]" позволяет выходить из цикла. Если "n"
отсутствует, то это эквивалентно "break 1". "n" указывает число

186

вложенных циклов, из которых надо выйти, например, "break 3" -
выход из трех вложенных циклов.

В отличие от команды "break" команда "continue [n]" лишь
прекращает выполнение текущего цикла и возвращает на
НАЧАЛО цикла. Она также может быть с параметром. Например,
"continue 2" означает выход на начало второго (если считать из
глубины) вложенного цикла.

Команда "exit [n]" позволяет выйти вообще из процедуры с
кодом возврата "О" или "n" (если параметр "n" указан). Эта
команда может использоваться не только в циклах. Даже в
линейной последовательности команд она может быть полезна
при отладке, чтобы прекратит выполнение (текущего) расчета в
заданной точке.

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

Оператор цикла "until" имеет структуру:
until условие
do

список команд
done

где "until" - служебное слово определяющее тип цикла с
ложным условием. Список команд в теле цикла (между "do" и
"done") повторяется до тех пор, пока сохраняется ложность
условия или цикл не будет прерван изнутри специальными
командами ("break", "continue" или "exit"). При первом входе в
цикл условие не должно выполняться.

Отличие от оператора "while" состоит в том, что условие
цикла проверяется на ложность (на ненулевой код завершения
последней команды тела цикла) проверяется ПОСЛЕ каждого (в
том числе и первого!) выполнения команд тела цикла.

Программистов, знакомых с операторами "until" в других
языках может вначале сбивать такая семантика этого оператора.
Примеры.

until false
do
read х

187

if [ $x - 5 ]

then echo enough ; break
else echo some more
fi

done

Здесь программа с бесконечным циклом ждет ввода слов
(повторяя на экране фразу "some more"), пока не будет введено
"5". После этого выдается "enough" и команда "break" прекращает
выполнение цикла.

Другой пример ("Ожидание полдня") иллюстрирует
возможность использовать в условии вычисления.
until date | grep 12:00:
do

sleep 30
done

Здесь каждые 30 секунд выполняется командная строка
условия. Команда "date" выдает текущую дату и время. Команда
"grep" получает эту информацию через конвейер и пытается
совместить заданный шаблон "12:00:" с временем, выдаваемым
командой "date". При несовпадении "grep" выдает код возврата
"1", что соответствует значению "ложь", и цикл "выполняет
ожидание" в течение 30 секунд, после чего повторяется
выполнение условия. В полдень (возможно с несколькими
секундами) произойдет сравнение, условие станет истинным,
"grep" выдаст на экран соответствующую строку и работа цикла
закончится.

1.7. Пустой оператор

Пустой оператор имеет формат

Ничего не делает. Возвращает значение "О". Например, в
конструкции "while :" или ставить в начале командного файла,
чтобы гарантировать, что файл не будет принят за выполняемый
файл для "csh".

188

1.8. Функции в shell

Функция позволяет подготовить список команд shell для
последующего выполнения.

Описание функции имеет вид:
имя ()
{


список команд
}

после чего обращение к функции происходит по имени. При
выполнении функции не создается нового процесса. Она
выполняется в среде соответствующего процесса. Аргументы
функции становятся ее позиционными параметрами; имя
функции - ее нулевой параметр. Прервать выполнение функции
можно оператором "return [n]", где (необязательное) "n" - код
возврата.

Пример. Вызов на выполнение файла "fun"

echo $$

fn() # описание функции

echo xx=$xx

echo $#

echo $0: $$ $1 $2

хх=уу ; echo xx=$xx

return 5

}

хх=хх ; echo xx=$xx

fn a b # вызов функции "fn" с
параметрами

echo $?
echo xx=$xx

содержащего описание и вызов функции "ft", выдаст на
экран:

749

хх=хх

хх=хх

2

fun: 749 а b

хх=уу

189

5
хх=уу


1.9. Обработка прерываний ("trap")


Бывает необходимо защитить выполнение программы от

прерывания.

Наиболее часто приходится встречаться со следующими
прерываниями, соответствующими сигналам:

0 выход из интерпретатора,

1 отбой (отключение удаленного абонента),

2 прерывание от ,

9 уничтожение (не перехватывается),

15 окончание выполнения.

Для защиты от прерываний существует команда "trap",

имеющая формат:

trap 'список команд' сигналы

Если в системе возникнут прерывания, чьи сигналы
перечислены через пробел в "сигналы", то будет выполнен
"список команд", после чего (если в списке команд не была
выполнена команда "exit") управление вернется в точку
прерывания и продолжится выполнение командного файла.

Например, если перед прекращением по прерываниям
выполнения какого то командного файла необходимо удалить
файлы в "/tmp", то это может быть выполнено командой "trap":
tarp 'rm /tmp/* ; exit 1` 1 2 15

которая предшествует прочим командам файла. Здесь, после
удаления файлов будет осуществлен выход "exit" из командного

файла.

Команда "trap" позволяет и просто игнорировать
прерывания, если "список команд" пустой. Так например, если
команда "cmd" выполняется очень долго, а пользователь решил
отключиться от системы, то для продолжения выполнения этой
команды можно написать, запустив команду в фоновом режиме:
( trap ' ' 1; cmd )&


2. Порядок выполнения работы


Внимательно ознакомившись с приведенным выше
материалом и пользуясь вышеприведенными программными
структурами и умениями, полученными в прошлых
лабораторных работах, на примере своих данных (8 лабораторная
работа) написать скрипты, проделывающие следующее в
зависимости от варианта (вариант - последняя цифра студ.
билета):


1.

Вариант

Описание действия

1,3,5,7,9

Находит файл с наибольшей длиной

2,4,6,8,0

Находит файл с наименьшей длиной


2.

Вариант

Описание действия

1,3,5,7,9

Находит файл с Наименьшей длиной и с возможностью записи в него для данного пользователя

2,4,6,8,0

Находит файл с наибольшей длиной и с возможностью записи в него для данного пользователя
1   2   3   4   5



Похожие:

Лабораторная работа №7 Инсталляция Linux iconДокументы
1. /OOP/Лабораторная работа ь00-Введение.doc
2. /OOP/Лабораторная...

Лабораторная работа №7 Инсталляция Linux iconЛабораторная работа: создание мини-презентации «Памятники Кремля»
Лабораторная работа проводится в компьютерном классе, с подключением к сети Internet
Лабораторная работа №7 Инсталляция Linux iconДокументы
1. /Lab1/Лабораторная работа 1.doc
2. /Lab2/Лабораторная...

Лабораторная работа №7 Инсталляция Linux iconИ я забуду Покажи мне и я запомню, Дай мне действовать самому и я научусь. Китайская мудрость Тема: Лабораторная работа
Тема: «Лабораторная работа «Измерение работы и мощности тока в электрической лампочке»
Лабораторная работа №7 Инсталляция Linux iconДокументы
1. /Nash/lab1/Лабораторная работа ь1.doc
2. /Nash/lab10/Лабораторная...

Лабораторная работа №7 Инсталляция Linux iconЛабораторная работа №2 «Система безопасности Windows xp»
Лабораторная работа №2 «Система безопасности Windows xp» Цель работы: Изучить систему безопасности Windows xp
Лабораторная работа №7 Инсталляция Linux iconЛабораторная работа «Работа в Windows c помощью основного меню. Использование технологии ole»
Запишите размер папки, выраженный в Мб (мегабайтах) в текстовый редактор блокнот
Лабораторная работа №7 Инсталляция Linux iconЛабораторная работа «Работа с текстовыми фрагментами без помощи мыши»
Скопируйте последнее слово получившегося текста и вставьте его в начало текста один раз
Лабораторная работа №7 Инсталляция Linux iconДокументы
1. /Базовые задачи на обработку массива.doc
2. /ЗадачиНаЛиниВетвление.doc
Лабораторная работа №7 Инсталляция Linux iconДокументы
1. /laba/Лабораторная работа ь1.doc
2. /laba/Лабораторная...

Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов