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

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

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

   return 0 ;;

  1) ;;

  2)

   echo &quot;Sorry, not unique.&quot;

   echo &quot;Found the following&quot;

   cat $temp_file

   get_return

   return 0

 esac

 IFS=&quot;, &quot;

 read cdcatnum cdtitle cdtype cdac &lt; $temp_file

 IFS=&quot; &quot;

 if [ -z &quot;$cdcatnum&quot; ]; then

  echo &quot;Sorry, could not extract catalog field from $temp_file&quot;

  get_return

  return 0

 fi

 echo

 echo Catalog number: $cdcatnum echo Title: $cdtitle

 echo Type: $cdtype

 echo Artist/Composer: $cdac

 echo

 get_return

 if [ &quot;$asklist&quot; = &quot;y&quot; ]; then

  echo -e &quot;View tracks for this CD? c&quot;

  read x

  if [ &quot;$x&quot; = &quot;y&quot; ]; then

   echo

   list_tracks

   echo

  fi

 fi

 return 1

}

8. Функция update_cd позволит вам повторно ввести сведения о компакт-диске. Учтите, что вы ищите (с помощью команды grep) строки, начинающиеся (^) с подстроки $cdcatnum, за которой следует &quot;, &quot; и должны заключить подстановку значения $cdcatnum в {}. Таким образом, вы сможете найти запятую без специального пробельного символа между ней и номером в каталоге. Эта функция также использует {} для образования блока из нескольких операторов, которые должны выполняться, если функция get_confirm вернет значение true.

update_cd() {

 if [ -z &quot;$cdcatnum&quot; ]; then

  echo &quot;You must select a CD first&quot;

  find_cd n

 fi

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

  echo &quot;Current tracks are :-&quot;

  list_tracks

  echo

  echo &quot;This will re-enter the tracks for $cdtitle&quot;

  get_confirm &amp;&amp; {

   grep -v &quot;^${cdcatnum}, &quot; $tracks_file &gt; $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 &quot;^$cdcatnum&quot; &gt; $title_file

файл $title_file станет пустым благодаря перенаправлению вывода &gt; до того, как команда grep выполнится, поэтому она будет читать уже пустой файл.

remove_records() {

 if [ -z &quot;$cdcatnum&quot; ]; then

  echo You must select a CD first find_cd n

 fi

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

  echo &quot;You are about to delete $cdtitle&quot;

  get_confirm &amp;&amp; {

   grep -v &quot;^${cdcatnum}, &quot; $title_file &gt; $temp_file

   mv $temp_file $title_file

   grep -v &quot;^${cdcatnum}, &quot; $tracks_file &gt; $temp_file

   mv $temp_file $tracks_file

   cdcatnum=&quot;&quot;

   echo Entry removed

  }

  get_return

 fi

 return

}

11. Функция list_tracks снова использует команду grep для извлечения нужных вам строк, команду cut для доступа к отдельным полям и затем команду more для постраничного вывода. Если вы посмотрите, сколько строк на языке С займет повторная реализация этих 20 необычных строк кода, то поймете, каким мощным средством может быть командная оболочка.

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