otchet5
.docxМинистерство образования и науки Российской Федерации
ГБОУ ВПО
Тверской государственный технический университет
Кафедра ЭВМ
Отчёт
по лабораторной работе №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$