Просмотрите следующие сценарии. Попробуйте запустить их, затем объясните — что они делают. Расставьте комментарии и попробуйте записать сценарии в более компактном виде.
-
#!/bin/bash
-
MAX=10000
-
for((nr=1; nr<$MAX; nr++))
-
do
-
let «t1 = nr % 5»
-
if [ «$t1« -ne 3 ]
-
then
-
continue
-
fi
-
let «t2 = nr % 7»
-
if [ «$t2« -ne 4 ]
-
then
-
continue
-
fi
-
let «t3 = nr % 9»
-
if [ «$t3« -ne 5 ]
-
then
-
continue
-
fi
-
break # Что произойдет, если закомментировать эту строку? Почему?
-
done
-
echo «Число = $nr«
-
exit 0
—
Читатель прислал следующий кусок кода.
-
while read LINE
-
do
-
echo $LINE
-
done < `tail -f /var/log/messages`
Он предполагал написать сценарий, который отслеживал бы изменения
в системном журнале /var/log/messages. К
сожалению, этот код «зависает» и не делает ничего полезного.
Почему? Найдите ошибку и исправьте ее (подсказка: вместо операции
перенаправления stdin в
цикл, попробуйте использовать конвейерную
обработку).
—
Просмотрите сценарий Пример A-11, попробуйте изменить его таким образом, чтобы он выглядел проще и логичнее. Удалите все «лишние» переменные и попытайтесь оптимизировать сценарий по скорости исполнения.
Измените сценарий таким образом, чтобы он мог принимать начальную установку «поколения 0» из любого текстового файла. Сценарий должен считать первые $ROW*$COL символов, и на место гласных вставлять «живые особи». Подсказка: не забудьте преобразовать пробелы в символы подчеркивания.
- Страница для печати
- 6357 просмотров