написанные программы / задание №1 — 3 / script_!
.doc
Лабораторная работа № 1
Интерактивную программу на языке shell
Работу выполнил:
студент гр. 2100
Голубцов Евгений
2009
Лабораторная работа #1
Написать интерактивную программу на языке shell, которая выводит список действий с номерами и ожидает ввода номера пункта, после чего начинает выполнение заданных в этом пункте команд. Для команд удаления необходимо запрашивать подтверждение дополнительно. Организовать обработку ошибок, например, при отсутствии удаляемого файла, для чего перенаправить вывод системных сообщений об ошибках в файл-журнал и выдать свое сообщение.
Вариант #4
1 - Напечатать имя текущего каталога
2 - Сменить текущий каталог
3 - Выдать список работающих пользователей
4 - Создать файл
5 - Скопировать файл
6 - Выход
#!/bin/bash
echo "Выберите пункт меню:
1 - Напечатать имя текущего каталога
2 - Сменить текущий каталог
3 - Выдать список работающих пользователей
4 - Создать файл
5 - Скопировать файл
6 - Выход"
echo "? - Помощь"
while :
read Keypress
do
case "$Keypress" in
#Напечатать имя текущего каталога
1 ) echo "Текущая директория:"; pwd;;
#Сменить текущий каталог
2 ) echo "Введите каталог:"
read way; cd "$way"; pwd;;
#Выдать список работающих пользователей
3 )echo "Пользователи:"; who;;
#Создать файл
4 ) echo "Введите название файла"
read f
if
test -f "$f"
then
echo "`date` Файл $f уже существует!" | tee -a err.log
else
touch "$f"
ls -l "$f"
fi;;
#Скопировать файл
5 ) echo "Введите имя файла"
read f
echo "Введите директорию"
read way
if test -f "$f"
then
if test -r "$f"
then
if test -f "$way"
then
if test -w "$way"
then
cp -f $f $way
else
echo "Доступ запрещен ($way)!" | tee -a err.log
fi
else
cp $f $way
fi
else
echo "Доступ запрещен ($way)!" | tee -a err.log
fi
else
echo "Файла $f не существует!" | tee -a err.log
fi;;
#Выход
6 )exit 0;;
#Помощь
? ) echo "Выберите пункт меню:
1 - Напечатать имя текущего каталога
2 - Сменить текущий каталог
3 - Выдать список работающих пользователей
4 - Создать файл
5 - Скопировать файл
6 - Выход";;
#Приглашение
* ) echo "Введите команду";;
esac
done