Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

otchet5

.docx
Скачиваний:
18
Добавлен:
19.05.2015
Размер:
26.67 Кб
Скачать

Министерство образования и науки Российской Федерации

ГБОУ ВПО

Тверской государственный технический университет

Кафедра ЭВМ

Отчёт

по лабораторной работе №5

на тему

Интерпретатор командного языка shell ”

по дисциплине

“Сетевые операционные системы”.

Выполнили: студенты

группы ВМКСС-0903

Григорьевская Т.Ю.

Лапшинов Д. А.

Приняла: Полтавцева М. А.

Тверь

2013

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

Различается два класса переменных: позиционные и с именем.

Позиционные переменные - это аргументы командных файлов, их именами служат цифры: $0 - имя команды, $1 - первый аргумент и т.д.

shift [ n ] Позиционные переменные, начиная с $(n+1), переименовываются в $1 и т.д. По умолчанию n=1.

-z s1 - истина, если длина строки s1 нулевая

Программа:

#!/bin/sh

echo "Имя программы: $0. Количество аргументов командной строки: $#.

Значение аргументов командной строки:"

while [ ! -z $1 ]

do

echo $1

shift

done

Результат запуска:

buba@buba-desktop:~/lr5$ sh 1

Имя программы: 1. Количество аргументов командной строки: 0.

Значение аргументов командной строки:

buba@buba-desktop:~/lr5$ sh 1 arg1 arg2 arg3

Имя программы: 1. Количество аргументов командной строки: 3.

Значение аргументов командной строки:

arg1

arg2

arg3

2. Используя позиционный параметр, отобразить содержимое текстового файла, указанного в качестве аргумента командной строки. После паузы экран очищается.

Программа:

#!/bin/sh

more $1

sleep 5s

clear

Результат запуска:

buba@buba-desktop:~/lr5$ sh 2 2

#!/bin/sh

more $1

sleep 5s

clear

3. Используя оператор FOR, отобразить содержимое текстовых файлов текущего каталога поэкранно.

Программа:

#!/bin/sh

for f in *.txt

do

printf "\n\tфайл $f \n\n"

more $f

done

Результат запуска:

buba@buba-desktop:~/lr5$ sh 3

файл txtfile1.txt

файлик первый

таня молодец

тратата

файл txtfile2.txt

файл №2

дима молодец

трулала

файл txtfile3.txt

файл номер три

всем привет от бубы

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

Программа:

#!/bin/sh

read -p "Введите число от 1 до 100: " X

if [ $X -lt 1 ] || [ $X -gt 100 ]

then

echo "НЕ ОК!!!"

else

echo "ОК"

fi

Результат запуска:

buba@buba-desktop:~/lr5$ sh 4

Введите число от 1 до 100: 54

ОК

buba@buba-desktop:~/lr5$ sh 4

Введите число от 1 до 100: 198

НЕ ОК!!!

5. Программой запрашивается год, определяется, високосный ли он. Результат выдается на экран.

Программа:

#!/bin/sh

read -p "Введите год: " x

z=$(($x % 4))

if [ $z = 0 ]

then

echo "Високосный"

else

echo "Не високосный"

fi

Результат запуска:

buba@buba-desktop:~/lr5$ sh 5

Введите год: 1992

Високосный

buba@buba-desktop:~/lr5$ sh 5

Введите год: 1991

Не високосный

buba@buba-desktop:~/lr5$ sh 5

Введите год: 2010

Не високосный

buba@buba-desktop:~/lr5$ sh 5

Введите год: 2012

Високосный

6. Вводятся целочисленные значения двух переменных. Вводится диапазон данных. Пока значения переменных находятся в указанном диапазоне, их значения инкрементируются.

Программа:

#!/bin/sh

read -p "Введите значения двух переменных через пробел: " a b

read -p "Задайте границы диапазона данных через пробел: " c d

if [ $a -gt $c ] && [ $b -gt $c ]

then

while [ $a -lt $d ] && [ $b -lt $d ]

do

a=$(( $a+1))

b=$(( $b+1))

echo "a=$a, b=$b"

done

else

echo "a=$a, b=$b" "Не попали :("

fi

Результат запуска:

buba@buba-desktop:~/lr5$ sh 6

Введите значения двух переменных через пробел: 6 10

Задайте границы диапазона данных через пробел: 4 17

a=7, b=11

a=8, b=12

a=9, b=13

a=10, b=14

a=11, b=15

a=12, b=16

a=13, b=17

buba@buba-desktop:~/lr5$

buba@buba-desktop:~/lr5$ sh 6

Введите значения двух переменных черех пробел: 6 10

Задайте границы диапазона данных через пробел: 7 17

a=6, b=10 Не попали :(

buba@buba-desktop:~/lr5$

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]