ЛАБОРАТОРНАЯ РАБОТА №3ed (Метода по выполнению лабораторной работы 3 по СПО)

2015-07-19СтудИзба

Описание файла

Документ из архива "Метода по выполнению лабораторной работы 3 по СПО", который расположен в категории "". Всё это находится в предмете "системное программное обеспечение (спо)" из 6 семестр, которые можно найти в файловом архиве МПУ. Не смотря на прямую связь этого архива с МПУ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "системное программное обеспечение (спо)" в общих файлах.

Онлайн просмотр документа "ЛАБОРАТОРНАЯ РАБОТА №3ed"

Текст из документа "ЛАБОРАТОРНАЯ РАБОТА №3ed"

ЛАБОРАТОРНАЯ РАБОТА №3

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ КОМАНДНОГО ИНТЕРПРЕТАТОРА

2.1 Цель работы

Целью данной работы является изучение основ программирования и отладки сценариев на языке командного интерпретатора Bourne Shell (использование условных выражений и логических операторов and/or в циклах while и until, программное прерывание бесконечного цикла, установка кода завершения, использование функций в сценариях).

2.2 Задание на выполнение работы

1) Просмотреть таблицы дескрипторов процесса.

2) Запустить программу поиска заданного слова в файле паролей.

3) Используя условные выражения, написать и отладить скрипт, проверяющий наличие в домашнем каталоге инициализационного скрипта .profile, а в случае его отсутствия выполнить копирование шаблона.

4) Написать скрипт очистки неиспользуемых файлов (за определенный промежуток времени) во временных каталогах (/tmp, /usr/tmp, /home/student/tmp).

5) Написать и отладить скрипт, иллюстрирующий различные способы защиты файлов. Для контроля (чтения) использовать команду cat:

  • установить для файла только право на запись;

  • для каталога установлено только право на чтение;

  • вывести список и прочитать файл (должно быть - файлы видно, нельзя прочитать содержимое);

  • установить для каталога бит использования (выполнения, execute bit);

  • прочитать содержимое файла и удалить (должно быть - файлы читаются, но не удаляются);

  • установить корректно права на доступ к каталогу и файл удалить.

6) Используя операторы цикла while, until, написать скрипт, выводящий на экран целые числа в заданном диапазоне.

7) Отладить пример кода с использованием логических операторов AND и OR.

8) Используя команды for и bc вывести квадратные корни чисел в заданном диапазоне.

9) Написать и отладить программу, реализующую алгоритм угадывания числа.

10) Написать и отладить программу, демонстрирующую перехват прерываний при выходе.

11) Разработать функцию, удаляющую временные файлы при завершении работы сценария.

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

В интерпретатор встроен мощный язык программирования, используемый для самых разных задач: от автоматизации повторяющихся команд до написания сложных интерактивных программ обработки данных. По соглашению в именах локальных переменных используются символы нижнего регистра, а в именах переменных среды – верхнего.

2.3.1 Условные операторы

Условные операторы выполняются в том случае, когда определенное условие (или несколько условий) истинно. Они могут принимать одну из трех общих форм: if, case и AND/OR.

Операторы if

Операторы if проверяют числовые выражения. Если условие истинно,

выполняют­ся операторы внутри блока if. Если оно ложно, то возможно два варианта действий:

1) операторы внутри блока не запускаются, и программа продолжает выполняться дальше;

2) если в блок if включен оператор else, выражения из последнего выполняются, если условие ложно, т.е., поток управления программы следует правилу: "Сделать это, если условие истинно, или то, если оно ложно, но не оба дей­ствия одновременно".

Синтаксис оператора:

if условие

then

команда1

команда2

fi

Более сложный формат:

if условие

then

команда1

elif условие

команда 2

else

команда 3

fi

Например, в следующей программе оператор if используется для проверки количества аргументов командной строки, переданной программе. Если их число больше или равно 1, программа выполняет операции внутри блока. Если они отсутствуют, программа завершает работу, не выполняя никаких действий.

  1. #!/bin/sh

  2. # Пример использования оператора if

  3. if [ $# -ge 1 ]

  4. then

  5. echo “You supplied $# command line arguments.”

  6. fi

  7. echo

  8. echo “Program exiting…”

  9. echo

  10. exit 0

Пример запуска программы:

./test file1 file2 file3

где test – имя файла (скрипта), file1 file2 file3 – аргументы.

Оператор if в строке 3 проверяет число аргументов командной строки, используя переменную $#, в которой оно содержится. Если оно больше или равно 1, выполняются операторы, заключенные между ключевыми словами then и fi (fi - это if наоборот, данный оператор отмечает конец блока). Если нет, управление передается оператору, следующему за fi. В данном случае он информирует пользователя о выходе из программы.

Часть then оператора if является обязательной, а часть else — нет. В рассмотренном примере операторы в блоке then выполняются тогда, когда условие истинно. Но иногда возникает необходимость выполнить действия лишь тогда, когда выражение ложно. В этом случае нужно воспользоваться двоеточием. Например:

if [ $myvar -gt 5 ]

then

: # He предпринимать никаких действий, выйти из блока if else

# Операторы, которые выполняются, если условие ложно.

fi

В некоторых случаях возникает необходимость проверить два или несколько разных условий и предпринять различные действия в зависимости от результатов каждого этапа. Для этих целей используется оператор elif (аббревиатура от else if). Когда используется оператор elif, программа вначале выполняет оператор if. Если его условие истинно, выполняется его код, а затем управление передается следующему оператору (т.е. оператору, расположенному после fi). Если условие ложно, проверяется условие в первом операторе elif. Если оно истинно,
выполняются операторы из его блока, и программа переходит к концу блока if. Если оно ложно, проверяется следующий оператор elif и т.д. Фактически, условия проверяются до тех пор, пока одно из них не даст значение истина. Если такого условия нет, ничего не происходит, либо запускаются операторы, заключенные в блоке else (если он присутству­ет).

Операторы if поддерживают также логические операторы AND (&&) и OR (||).

2.3.2 Логические операторы AND/OR

Логические условные операторы AND/OR в некоторых случаях заменяют опера­торы if. Код завершения первой команды используется как условие запуска второй. Например:

tar cvfz backup.tar.gz documents/2004/* && rm -r documents/2004

Эта команда означает следующее: "Если первая операция прошла успешно, вы­полнить вторую. Если нет — вторая команда не выполняется". Другими словами: "Необходимо выполнить команды А и В. Но если команда А невыполнима, то не следует исполнять и В". В данном случае первая команда архивирует все файлы из каталога documents/2004 в файл backup.tar.gz. Если этот процесс завершается успеш­но (команда tar возвращает код 0), выполняется команда после оператора &&, ко­торая удаляет каталог documents/2004. Если же процесс архивирования не завершен успешно (команда tar возвращает код, отличный от 0), команда после && не испол­няется (нет смысла удалять каталог, если он не был корректно заархи­вирован).

Символом || обозначается оператор OR. Он означает следующее: "Если А невыполни­мо, исполнить В. Но если А завершилось успешно, В не выполнять". Например:

tar cvfz backup.tar.gz doc/2004/* || echo "Archive operation

failed."

В этом случае, если операция архивирования завершается успешно (tar возвраща­ет 0), команда после оператора || не запускается. Если же нет (tar возвращает значе­ние, отличное от 0), выполняется команда, указанная после ||, - на экран выводится сообщение об ошибке.

2.3.3 Организация циклов

В некоторых случаях требуется повторять действие до тех пор, пока определенное выражение не станет истинным (или, наоборот, перестанет быть истинным). Язык программирования Bourne shell поддерживает три вида циклических конструкций.

1) Цикл while

Синтаксис:

while условие

do

команда1

команда2

….

done

Цикл while выполняет операторы, заключенные в нем, до тех пор, пока условие цикла является истинным. Если уже при первом проходе цикла условие ложно, операторы внутри цикла выпол­няться не будут. Например, в следующей программе цикл while используется для вывода на экран целых чисел от 1 до 20.

  1. #!/bin/sh

  2. # Count from 1 to 20

  3. i=1

  4. while [ $i -le 20 ]

  5. do

  6. echo $i

  7. i = $[i+1]

  8. done

  9. exit 0

В этом примере в строке 3 переменной i присваивается начальное значение 1. i часто применяется как счетчик цикла, поэтому здесь нет необходимости использовать описательное имя.

Строка 4: Команда while содержит условие, заключенное в квадратные скобки. На самом деле, они представляют собой сокращенную запись команды test, которая часто используется в сценариях командного интерпретатора. Команда test использует достаточно прозрачный синтаксис, -1е в данном примере обозначает "меньше или равно". Таким образом, цикл выполняется до тех пор, пока значение переменной i меньше или равно 20. Операторы сравнения, под­держиваемые данной командой, приведены в таблице 1.

Таблица 1 – Операции сравнения команды test

Опции

Значение

-eq

Истина, если операнды равны

-ne

Истина, если операнды не равны

-gt

Истина, если первый операнд больше второго

-ge

Истина, если первый операнд больше или равен второму

-lt

Истина, если первый операнд меньше второго

-le

Истина, если первый операнд меньше или равен второму

Строка 5: Оператор do указывает, что все операторы, следующие за ним, должны выполняться при каждой итерации цикла. Все выражения между do и done являются телом цикла.

Строка 6: Здесь выводится значение переменной i.

Строка 7: Здесь используется подстановка команд, значение переменной i уве­личивается на единицу, а затем новое значение вновь присваивается переменной.­
Строка 8: Завершающий оператор цикла. В этой точке программа вновь воз­вращается к оператору while и вновь проверяет условие цикла. Если значение переменной i все еще меньше или равно 20, операторы в теле цикла выполня­ются снова. Если i больше 20, цикл завершается и управление передается опе­ратору, следующему за оператором done (в данном случае, это просто опера­тор exit в строке 9, который завершает программу с кодом успешного выполнения, равным 0).

Операторы внутри цикла выровнены с отступом по левому краю. Это позволяет легко выделить цикл при чтении исходного кода. Интерпретатор игнорирует отступ, выполняя команды обычным образом. Пробел между [ и тестируемым условием является обязательным. Его отсутствие приведет к ошибке. Например, [ $VarA -gt 5 ] выполняется, a [$VarA -gt 5] возвращает ошибку.

2) Цикл until

Синтаксис:

until условие

do

команда1

команда2

. . . .

done

Цикл until по смыслу противоположен циклу while. Он выполняет последователь­ность операций до тех пор, пока условие не станет истинным. В этом случае цикл завершается. Если условие истинно уже при первом запуске, операторы в теле цикла не запускаются. Циклы while и until очень похожи. Как правило, любой из них можно использовать в программе и добиваться одного и того же результата, изменяя условие. Например, пре­дыдущую программу можно переписать, заменив цикл while на until. При этом в строке 4 потребуется лишь два изменения:

until [ $I -gt 20 ]

Программа выполняет ту же функцию. Единственное различие заключается в том, что теперь цикл выполняется до тех пор, пока значение переменной i не станет большим 20, тогда как цикл while выполнялся до тех пор, пока i было меньше или равно 20. В обоих случаях программа дает один и тот же результат.

Логические операторы AND/OR в циклах while и until

Циклы while и until позволяют работать с логическими операторами AND/OR. Логи­ческое выражение AND возвращает значение истина лишь в том случае, когда оба опе­ранда истинны, а выражение OR - когда лишь один из операндов имеет значение истина. Ниже приведен пример кода с логическим оператором AND:

VarA=1

VarB=5

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5168
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее