Основы программирования в 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 && {
Поделиться:
Популярные книги
Последний Паладин. Том 3
3. Путь Паладина
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний попаданец 5
5. Последний попаданец
Фантастика:
юмористическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
6 Секретов мисс Недотроги
2. Мисс Недотрога
Любовные романы:
любовно-фантастические романы
эро литература
7.34
рейтинг книги
Измена
Любовные романы:
современные любовные романы
5.38
рейтинг книги
Курсант: Назад в СССР 13
13. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Газлайтер. Том 6
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Купидон с топором
Любовные романы:
современные любовные романы
7.67
рейтинг книги
Виконт. Книга 3. Знамена Легиона
3. Псевдоним `Испанец`
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Попаданка в деле, или Ваш любимый доктор - 2
2. Попаданка в деле, или Ваш любимый доктор
Любовные романы:
любовно-фантастические романы
7.43
рейтинг книги
Усадьба леди Анны
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Титан империи 2
2. Титан Империи
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Вечный. Книга I
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Убивать чтобы жить 5
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00