Основы программирования в 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
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Солнечный корт
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Барон обходит правила
14. Закон сильного
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Советник 2
7. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Мы – Гордые часть 8
8. Стальные яйца
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Ты - наша
1. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Вперед в прошлое 9
9. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Противостояние
2. Стратег
Фантастика:
боевая фантастика
космическая фантастика
5.25
рейтинг книги
Адвокат Империи 4
4. Адвокат империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Третий Генерал: Том VII
6. Третий Генерал
Фантастика:
городское фэнтези
аниме
сказочная фантастика
попаданцы
5.00
рейтинг книги
Барон запрещает правила
9. Закон сильного
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 6
6. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Неудержимый. Книга II
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
На границе империй. Том 7. Часть 3
9. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.40