Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Интернет » Основы программирования в Linux - Мэтью Нейл
<< На главную

Основы программирования в Linux - Мэтью Нейл

Читать онлайн Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 37 38 39 40 41 42 43 44 45 ... 324
Перейти на страницу:

5. Далее идут две очень короткие функции, insert_title и insert_track, для пополнения файлов базы данных. Несмотря на то, что некоторые программисты ненавидят однострочные функции вроде этих, они помогают сделать понятнее другие функции.

За ними следует более длинная функция add_record_track, использующая эти функции. В данной функции применяется проверка на соответствие шаблону, чтобы исключить ввод запятых (поскольку мы. используем запятые для разделения полей), и арифметические операции для увеличения номера текущей дорожки на 1, когда вводятся данные о новой дорожке.

insert_title() {

 echo $* &gt;&gt; $title_file

 return

}

insert_track() {

 echo $* &gt;&gt; $tracks_file

 return

}

add_record_tracks() {

 echo &quot;Enter track information for this CD&quot;

 echo &quot;When no more tracks enter q&quot;

 cdtrack=1

 cdttitle=&quot;&quot;

 while [ &quot;$cdttitle&quot; != &quot;q&quot; ]

 do

  echo -e &quot;Track $cdtrack, track title? c&quot;

  read tmp

  cdttitle=${tmp%%, *}

  if [ &quot;$tmp&quot; != &quot;$cdttitle&quot; ]; then

   echo &quot;Sorry, no commas allowed&quot;

   continue

  fi

  if [ -n &quot;$cdttitle&quot; ] ; then

   if [ &quot;$cdttitle&quot; ! = &quot;q&quot; ]; then

    insert_track $cdcatnum, $cdtrack, $cdttitle

   fi

  else

   cdtrack=$((cdtrack-1))

  fi

  cdtrack=$((cdtrack+1))

 done

}

6. Функция add_records позволяет вводить основную информацию о новом компакт-диске.

add_records() {

 # Подсказка для начала ввода информации

 echo -е &quot;Enter catalog name с&quot;

 read tmp

 cdcatnum=${tmp%%, *}

 echo -e &quot;Enter title c&quot;

 read tmp

 cdtitle=${tmp%%, *}

 echo -e &quot;Enter type c&quot;

 read tmp

 cdtype=${tmp%%, *}

 echo -e &quot;Enter artist/composer c&quot;

 read tmp

 cdac=${tmp%%, *}

 # Проверяет, хочет ли пользователь ввести информацию

 echo About to add new entry

 echo &quot;$cdcatnum $cdtitle $cdtype $cdac&quot;

 # Если получено подтверждение, добавляет данные в конец файла.

 # с заголовками

 if get_confirm ; then

  insert_title $cdcatnum, $cdtitle, $cdtype, $cdac

  add_record_tracks

 else

  remove_records

 fi

 return

}

7. Функция find_cd с помощью команды grep ищет текст с названием компакт-диска в файле с заголовочной информацией. Вам нужно знать, сколько раз была найдена строка, а команда grep только вернет значение, указывающее на то, что строка не была найдена или была найдена многократно. Для решения этой проблемы сохраните вывод в файл, отводящий по одной строке на каждое найденное совпадение, а затем сосчитайте количество строк в файле.

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

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

find_сd() {

 if [ &quot;$1&quot; = &quot;n&quot; ]; then

  asklist=n

 else

  asklist=y

 fi

 cdcatnum=&quot;&quot;

 echo -e &quot;Enter a string to search for in the CD titles c&quot;

 read searchstr

 if [ &quot;$searchstr&quot; = &quot;&quot; ]; then

  return 0

 fi

 grep &quot;$searchstr&quot; $title_file &gt; $temp_file

 set $(wc -l $temp_file)

 linesfound=$1

 case &quot;$linesfound&quot; in

  0)

   echo &quot;Sorry, nothing found&quot;

   get_return

1 ... 37 38 39 40 41 42 43 44 45 ... 324
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Мэтью Нейл бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга