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

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

Жанры

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

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

Дети немилости

Онойко Ольга
Фантастика:
фэнтези
7.00
рейтинг книги
Дети немилости

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

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

1759. Год завоевания Британией мирового господства

Маклинн Фрэнк
Научно-образовательная:
история
4.00
рейтинг книги
1759. Год завоевания Британией мирового господства

Школьный Надзор

Лукьяненко Сергей Васильевич
Дозоры
Фантастика:
фэнтези
7.59
рейтинг книги
Школьный Надзор

Linux Mint и его Cinnamon. Очерки применителя

Федорчук Алексей Викторович
Компьютеры и Интернет:
ос и сети
5.00
рейтинг книги
Linux Mint и его Cinnamon. Очерки применителя

Сборник статей и интервью 2009г (v1.23)

Кагарлицкий Борис Юльевич
Научно-образовательная:
политика
5.00
рейтинг книги
Сборник статей и интервью 2009г (v1.23)

Потерянный разум

Кара-Мурза Сергей Георгиевич
Научно-образовательная:
политика
5.00
рейтинг книги
Потерянный разум

Том 6. Зарубежная литература и театр

Луначарский Анатолий Васильевич
6. Собрание сочинений в восьми томах
Документальная литература:
критика
5.00
рейтинг книги
Том 6. Зарубежная литература и театр

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

Володин Григорий Григорьевич
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 4

Бальмануг. (Не) Любовница 2

Лашина Полина
4. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бальмануг. (Не) Любовница 2

История политических и правовых учений. Учебник

Коллектив авторов
Научно-образовательная:
история
юриспруденция
5.00
рейтинг книги
История политических и правовых учений. Учебник

Маленькая женщина Большого

Зайцева Мария
5. Наша
Любовные романы:
эро литература
современные любовные романы
5.40
рейтинг книги
Маленькая женщина Большого

"Фантастика 2024-164". Компиляция. Книги 1-25

Злотников Роман Валерьевич
Фантастика 2024. Компиляция
Фантастика:
боевая фантастика
попаданцы
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Фантастика 2024-164. Компиляция. Книги 1-25

Мясной Бор

Гагарин Станислав Семенович
Проза:
военная проза
историческая проза
7.50
рейтинг книги
Мясной Бор