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

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

Жанры

Основы программирования в Linux
Шрифт:

У команды счетчика слов,

wc
, в выводе есть пробельный символ, разделяющий количества строк, слов и символов в файле. Используйте синтаксическую запись
$(wc -l $temp_file)
для извлечения первого параметра в выводе и переноса его в переменную
linesfound
. Если бы вам был нужен другой следующий далее параметр, нужно было бы воспользоваться командой
set
для установки значений переменных-параметров оболочки из вывода команды.

Изменив значение переменной

IFS
(Internal Field Separator, внутренний разделитель полей) на запятую, вы сможете разделить поля, разграниченные запятыми. Альтернативный вариант — применить команду
cut
.

find_сd {

 if [ "$1" = "n" ]; then

asklist=n

 else

asklist=y

 fi

 cdcatnum=""

 echo -e "Enter a string to search for in the CD titles \c"

 read searchstr

 if [ "$searchstr" = "" ]; then

return 0

 fi

 grep "$searchstr" $title_file > $temp_file

 set $(wc -l $temp_file)

 linesfound=$1

 case "$linesfound" in

0)

echo "Sorry, nothing found"

get_return

return 0 ;;

1) ;;

2)

echo "Sorry, not unique."

echo "Found the following"

cat $temp_file

get_return

return 0

 esac

 IFS=", "

 read cdcatnum cdtitle cdtype cdac < $temp_file

 IFS=" "

 if [ -z "$cdcatnum" ]; then

echo "Sorry, could not extract catalog field from $temp_file"

get_return

return 0

 fi

 echo

 echo Catalog number: $cdcatnum echo Title: $cdtitle

 echo Type: $cdtype

 echo Artist/Composer: $cdac

 echo

 get_return

 if [ "$asklist" = "y" ]; then

echo -e "View tracks for this CD? \c"

read x

if [ "$x" = "y" ]; then

echo

list_tracks

echo

fi

 fi

 return 1

}

8. Функция

update_cd
позволит вам повторно ввести сведения о компакт-диске. Учтите, что вы ищите (с помощью команды
grep
) строки, начинающиеся (
^
) с подстроки
$cdcatnum
, за которой следует
", "
и должны заключить подстановку значения
$cdcatnum
в
{}
. Таким образом, вы сможете найти запятую без специального пробельного символа между ней и номером в каталоге. Эта функция также использует
{}
для образования блока из нескольких операторов, которые должны выполняться, если функция
get_confirm
вернет значение true.

update_cd {

 if [ -z "$cdcatnum" ]; then

echo "You must select a CD first"

find_cd n

 fi

 if [ -n "$cdcatnum" ]; then

echo "Current tracks are :-"

list_tracks

echo

echo "This will re-enter the tracks for $cdtitle"

get_confirm && {

grep -v "^${cdcatnum}, " $tracks_file > $temp_file

mv $temp_file $tracks_file

echo

add_record_tracks

}

 fi

 return

}

9. Функция

count_cds
дает возможность быстро пересчитать содержимое базы данных.

count_cds {

 set $(wc -l $title_file)

 num_titles=$1

 set $(wc -l $tracks_file)

 num_tracks=$1

 echo found $num_titles CDs, with a total of $num_tracks tracks

 get_return

 return

}

10. Функция

remove_records
удаляет элементы из файлов базы данных с помощью команды
grep -v
, удаляющей все совпадающие строки. Учтите, что нужно применять временный файл.

Если вы попытаетесь применить команду:

grep -v "^$cdcatnum" > $title_file

файл

$title_file
станет пустым благодаря перенаправлению вывода
>
до того, как команда
grep
выполнится, поэтому она будет читать уже пустой файл.

remove_records {

 if [ -z "$cdcatnum" ]; then

echo You must select a CD first find_cd n

 fi

 if [ -n "$cdcatnum" ]; then

echo "You are about to delete $cdtitle"

get_confirm && {

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

(Бес) Предел

Юнина Наталья
Любовные романы:
современные любовные романы
6.75
рейтинг книги
(Бес) Предел

Три черепахи

Шмелев Олег
Детективы:
прочие детективы
7.00
рейтинг книги
Три черепахи

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Очень сильный пол (сборник)

Кабаков Александр Абрамович
Проза:
современная проза
6.25
рейтинг книги
Очень сильный пол (сборник)

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

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

Том 3. Рассказы 1896-1899

Горький Максим
3. Собрание сочинений в тридцати томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 3. Рассказы 1896-1899

Кровь Севера

Мазин Александр Владимирович
3. Викинг
Фантастика:
альтернативная история
9.14
рейтинг книги
Кровь Севера

Лекарь Империи 2

Карелин Сергей Витальевич
2. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Лекарь Империи 2

На границе империй. Том 8

INDIGO
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8

Первый среди равных. Книга X

Бор Жорж
10. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Первый среди равных. Книга X

Второй кощей

Билик Дмитрий Александрович
8. Бедовый
Фантастика:
юмористическое фэнтези
городское фэнтези
мистика
5.00
рейтинг книги
Второй кощей

Плацдарм

Астафьев Виктор Петрович
2. Прокляты и убиты
Проза:
современная проза
7.50
рейтинг книги
Плацдарм

Академия

Сай Ярослав
2. Медорфенов
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Академия

Магическая сделка

Звездная Елена
3. Долина Драконов
Фантастика:
фэнтези
6.84
рейтинг книги
Магическая сделка