K.1. Анализ сценариев | Популярный Linux

Опубликовано Bash в Ср, 23/12/2009 — 21:08

Просмотрите следующие сценарии. Попробуйте запустить их, затем объясните — что они делают. Расставьте комментарии и попробуйте записать сценарии в более компактном виде.

  1. #!/bin/bash
  2. MAX=10000
  3.   for((nr=1; nr<$MAX; nr++))
  4.   do
  5.     let «t1 = nr % 5»
  6.     if [ «$t1« -ne 3 ]
  7.     then
  8.       continue
  9.     fi
  10.     let «t2 = nr % 7»
  11.     if [ «$t2« -ne 4 ]
  12.     then
  13.       continue
  14.     fi
  15.     let «t3 = nr % 9»
  16.     if [ «$t3« -ne 5 ]
  17.     then
  18.       continue
  19.     fi
  20.   break   # Что произойдет, если закомментировать эту строку? Почему?
  21.   done
  22.   echo «Число = $nr«
  23. exit 0

Читатель прислал следующий кусок кода.

  1. while read LINE
  2. do
  3.   echo $LINE
  4. done < `tail -f /var/log/messages`

Он предполагал написать сценарий, который отслеживал бы изменения
в системном журнале /var/log/messages. К
сожалению, этот код «зависает» и не делает ничего полезного.
Почему? Найдите ошибку и исправьте ее (подсказка: вместо операции
перенаправления stdin в
цикл
, попробуйте использовать конвейерную
обработку
).

Просмотрите сценарий Пример A-11, попробуйте изменить его таким образом, чтобы он выглядел проще и логичнее. Удалите все «лишние» переменные и попытайтесь оптимизировать сценарий по скорости исполнения.

Измените сценарий таким образом, чтобы он мог принимать начальную установку «поколения 0» из любого текстового файла. Сценарий должен считать первые $ROW*$COL символов, и на место гласных вставлять «живые особи». Подсказка: не забудьте преобразовать пробелы в символы подчеркивания.

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.