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

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

Жанры

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

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

Русские горки. Конец Российского государства

Калюжный Дмитрий Витальевич
Великие противостояния
Научно-образовательная:
история
политика
6.00
рейтинг книги
Русские горки. Конец Российского государства

Боярин

Гончаров Олег
3. Ночь Сварога
Приключения:
исторические приключения
8.58
рейтинг книги
Боярин

Эпоха Опустошителя. Том V

Павлов Вел
5. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том V

Экспансия – I

Семенов Юлиан Семенович
10. Штирлиц
Детективы:
политические детективы
6.33
рейтинг книги
Экспансия – I

Самоучитель UML

Леоненков Александр
Компьютеры и Интернет:
программирование
прочая компьютерная литература
5.00
рейтинг книги
Самоучитель UML

Удельная. Очерки истории

Глезеров Сергей Евгеньевич
Всё о Санкт-Петербурге
Научно-образовательная:
история
культурология
5.00
рейтинг книги
Удельная. Очерки истории

Собрание сочинений в 15 томах. Том 7

Уэллс Герберт Джордж
Фантастика:
научная фантастика
5.00
рейтинг книги
Собрание сочинений в 15 томах. Том 7

Чехов

Гоблин (MeXXanik)
1. Адвокат Чехов
Фантастика:
фэнтези
боевая фантастика
альтернативная история
5.00
рейтинг книги
Чехов

Темный карнавал (сборник)

Брэдбери Рэй Дуглас
1. Сборники рассказов Рэя Брэдбери
Фантастика:
социально-философская фантастика
научная фантастика
ужасы и мистика
мистика
сказочная фантастика
7.71
рейтинг книги
Темный карнавал (сборник)

Последний Паладин. Том 5

Саваровский Роман
5. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 5

Туманы Авалона

Брэдли Мэрион Зиммер
Шедевры фантастики
Фантастика:
фэнтези
альтернативная история
8.11
рейтинг книги
Туманы Авалона

Этика

Гусейнов Абдусалам
Научно-образовательная:
философия
учебники
5.00
рейтинг книги
Этика

Шайтан Иван 6

Тен Эдуард
6. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
7.43
рейтинг книги
Шайтан Иван 6

Святая Русь

Балашов Дмитрий Михайлович
7. Государи московские
Научно-образовательная:
история
6.17
рейтинг книги
Святая Русь