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

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

Жанры

Основы программирования в 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 && {

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

Искатель 4

Шиленко Сергей
4. Валинор
Фантастика:
рпг
фэнтези
попаданцы
5.00
рейтинг книги
Искатель 4

Романов. Том 1 и Том 2

Кощеев Владимир
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Романов. Том 1 и Том 2

Газлайтер. Том 9

Володин Григорий
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 9

Я снова не князь! Книга XVII

Дрейк Сириус
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я снова не князь! Книга XVII

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

Двойник короля 17

Скабер Артемий
17. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 17

Отморозок 1

Поповский Андрей Владимирович
1. Отморозок
Фантастика:
попаданцы
5.00
рейтинг книги
Отморозок 1

Eroshort

Eroshort
Дом и Семья:
образовательная литература
3.40
рейтинг книги
Eroshort

На границе империй. Том 9. Часть 3

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

Вечный. Книга III

Рокотов Алексей
3. Вечный
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга III

Инженер против

Красногоров Яр
1. Сила Сопротивления
Фантастика:
боевая фантастика
постапокалипсис
рпг
фэнтези
5.00
рейтинг книги
Инженер против

Заточи свой клинок и Вперед!

Шиленко Сергей
1. Заточи свой клинок, и Вперед!
Фантастика:
юмористическая фантастика
рпг
попаданцы
5.00
рейтинг книги
Заточи свой клинок и Вперед!

Петля, Кадетский корпус. Книга первая

Алексеев Евгений Артемович
1. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
6.11
рейтинг книги
Петля, Кадетский корпус. Книга первая

Наследие Маозари 2

Панежин Евгений
2. Наследие Маозари
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 2