Чтение онлайн

на главную - закладки

Жанры

Основы программирования в 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 только вернет значение, указывающее на то, что строка не была найдена или была найдена многократно. Для решения этой проблемы сохраните вывод в файл, отводящий по одной строке на каждое найденное совпадение, а затем сосчитайте количество строк в файле.

Поделиться:
Популярные книги

Евангельское злато. Беседы на Евангелие

Войно-Ясенецкий Архиепископ Лука
Религия и эзотерика:
религия
христианство
православие
5.00
рейтинг книги
Евангельское злато. Беседы на Евангелие

Легенды II (антология)

Хобб Робин
Золотая серия фэнтези
Фантастика:
фэнтези
научная фантастика
4.83
рейтинг книги
Легенды II (антология)

"Фантастика 2023-130". Компиляция. Книги 1-22

Демченко Антон Витальевич
Фантастика 2023. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2023-130. Компиляция. Книги 1-22

Неучтенный элемент. Том 8

NikL
8. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 8

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

Весь Гамильтон Эдмонд в одном томе

Гамильтон Эдмонд Мур
Абсолют
Фантастика:
боевая фантастика
ужасы и мистика
космическая фантастика
5.00
рейтинг книги
Весь Гамильтон Эдмонд в одном томе

Последний реанорец. Том IX

Павлов Вел
8. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
5.80
рейтинг книги
Последний реанорец. Том IX

Тактик

Земляной Андрей Борисович
2. Офицер
Фантастика:
альтернативная история
7.70
рейтинг книги
Тактик

Ник. Цикл

Ясинский Анджей
Ник
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ник. Цикл

100 знаменитых изобретений

Пристинский Владислав Леонидович
26. 100 знаменитых
Документальная литература:
публицистика
5.00
рейтинг книги
100 знаменитых изобретений

Источник

Рэнд Айн
Проза:
современная проза
8.59
рейтинг книги
Источник

Неучтенный элемент. Том 5

NikL
5. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 5

Перри Родан

Дарлтон Кларк
Фантастика:
космическая фантастика
6.60
рейтинг книги
Перри Родан

Шолохов

Осипов Валентин Осипович
939. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Шолохов