Основы программирования в Linux
Шрифт:
get_return (
echo -е "Press return \с"
read x
return 0
}
get_confirm (
echo -e "Are you sure? \c"
while true do
read x
case "$x" in
y | yes | Y | Yes | YES )
return 0;;
n | no | N | No | NO )
echo
echo "Cancelled"
return 1;;
*)
echo "Please enter yes or no" ;;
esac
done
}
4.
set_menu_choice
. Содержимое меню изменяется динамически, добавляя дополнительные пункты при выборе компакт-диска.
set_menu_choice {
clear
echo "Options :-"
echo
echo " a) Add new CD"
echo " f) Find CD"
echo " c) Count the CDs and tracks in the catalog"
if [ "$cdcatnum" != "" ]; then
echo " 1) List tracks on $cdtitle"
echo " r) Remove $cdtitle"
echo " u) Update track information for $cdtitle"
fi
echo " q) Quit" echo
echo -e "Please enter choice then press return \c"
read menu_choice
return
}
Примечание
Имейте в виду, что команда
echo -е
не переносится в некоторые командные оболочки. 5. Далее идут две очень короткие функции,
insert_title
и insert_track
, для пополнения файлов базы данных. Несмотря на то, что некоторые программисты ненавидят однострочные функции вроде этих, они помогают сделать понятнее другие функции. За ними следует более длинная функция
add_record_track
, использующая эти функции. В данной функции применяется проверка на соответствие шаблону, чтобы исключить ввод запятых (поскольку мы. используем запятые для разделения полей), и арифметические операции для увеличения номера текущей дорожки на 1, когда вводятся данные о новой дорожке.
insert_title {
echo $* >> $title_file
return
}
insert_track {
echo $* >> $tracks_file
return
}
add_record_tracks {
echo "Enter track information for this CD"
echo "When no more tracks enter q"
cdtrack=1
cdttitle=""
while [ "$cdttitle" != "q" ]
do
echo -e "Track $cdtrack, track title? \c"
read tmp
cdttitle=${tmp%%, *}
if [ "$tmp" != "$cdttitle" ]; then
echo "Sorry, no commas allowed"
continue
fi
if [ -n "$cdttitle" ] ; then
if [ "$cdttitle" ! = "q" ]; then
insert_track $cdcatnum, $cdtrack, $cdttitle
fi
else
cdtrack=$((cdtrack-1))
fi
cdtrack=$((cdtrack+1))
done
}
6. Функция
add_records
позволяет вводить основную информацию о новом компакт-диске.
add_records {
# Подсказка для начала ввода информации
echo -е "Enter catalog name \с"
read tmp
cdcatnum=${tmp%%, *}
echo -e "Enter title \c"
read tmp
cdtitle=${tmp%%, *}
echo -e "Enter type \c"
read tmp
cdtype=${tmp%%, *}
echo -e "Enter artist/composer \c"
read tmp
cdac=${tmp%%, *}
# Проверяет, хочет ли пользователь ввести информацию
echo About to add new entry
echo "$cdcatnum $cdtitle $cdtype $cdac"
# Если получено подтверждение, добавляет данные в конец файла.
# с заголовками
if get_confirm ; then
insert_title $cdcatnum, $cdtitle, $cdtype, $cdac
add_record_tracks
else
remove_records
fi
return
}
7. Функция
find_cd
с помощью команды grep
ищет текст с названием компакт-диска в файле с заголовочной информацией. Вам нужно знать, сколько раз была найдена строка, а команда grep только вернет значение, указывающее на то, что строка не была найдена или была найдена многократно. Для решения этой проблемы сохраните вывод в файл, отводящий по одной строке на каждое найденное совпадение, а затем сосчитайте количество строк в файле.
Поделиться:
Популярные книги
Искушение генерала драконов
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Идеальный мир для Лекаря
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Третье правило дворянина
3. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Третий. Том 2
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Лорд Системы 11
11. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Обыкновенные ведьмы средней полосы
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Купеческая дочь замуж не желает
Фантастика:
фэнтези
6.89
рейтинг книги
Para bellum
4. Фрунзе
Фантастика:
попаданцы
альтернативная история
6.60
рейтинг книги
Неверный
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неудержимый. Книга VI
6. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь
1. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Вперед в прошлое 6
6. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Без шансов
2. Пробуждение Системы
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Истребители. Трилогия
Фантастика:
альтернативная история
7.30