Пример 16-5. Альтернативная форма перенаправления в цикле while

Пример 16-5. Альтернативная форма перенаправления в цикле while

#!/bin/bash

# Это альтернативный вариант предыдущего сценария.

# Предложил: by Heiner Steven

#+ для случаев, когда циклы с перенаправлением

#+ запускаются в субоболочке, из-за чего переменные, устанавливаемые в цикле,

#+ не сохраняют свои значения по завершении цикла.

if [ -z "$1" ]

then

Filename=names.data # По-умолчанию, если имя файла не задано.

else

Filename=$1

fi

exec 3<&0 # Сохранить stdin в дескр. 3.

exec 0<"$Filename" # Перенаправить stdin.

count=0

echo

while [ "$name" != Smith ]

do

read name # Прочитать с перенаправленного stdin ($Filename).

echo $name

let "count += 1"

done <"$Filename" # Цикл читает из файла $Filename.

# ^^^^^^^^^^^^

exec 0<&3 # Восстановить stdin.

exec 3<&- # Закрыть временный дескриптор 3.

echo; echo "Имен прочитано: $count"; echo

exit 0

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

3.1.5. Неявное преобразование в цикле for

Из книги О чём не пишут в книгах по Delphi автора Григорьев А. Б.

3.1.5. Неявное преобразование в цикле for Рассмотрим программу (пример ForRange на компакт-диске), на форме которой находятся кнопка и панель, причем кнопка (это важно!) — не на панели, а на форме, а на панели нет никаких компонентов. Обработчик нажатия на кнопку выглядит следующим


3.2.9. Вычитание в цикле

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

3.2.9. Вычитание в цикле Рассмотрим еще один пример, иллюстрирующий ситуацию, которая часто озадачивает начинающего программиста (листинг 3.12, пример Subtraction на компакт-диске).Листинг 3.12. Накапливание ошибки при вычитанииprocedure TForm1.Button1Click(Sender: TObject);var R: Single; I: Integer;begin R:= 1; for I:= 1


14.3.1. Использование библиотеки Shell для перенаправления ввода/вывода

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

14.3.1. Использование библиотеки Shell для перенаправления ввода/вывода В классе Shell для создания объектов есть два метода: new и cd. Первый создает объект, ассоциированный с текущим каталогом, второй — объект, для которого рабочим будет указанный каталог.require "shell"sh1 =


Настройка сервера для перенаправления запросов

Из книги Удвоение продаж в интернет-магазине автора Парабеллум Андрей Алексеевич

Настройка сервера для перенаправления запросов BIND осуществляет преобразование имен одним из трех описанных ниже способов.1. Если пакет BIND настроен для поддержки запрошенного имени, сервер возвращает адрес, указанный в его конфигурационном файле.2. Если запрашиваемый


Задачи, решаемые с помощью перенаправления портов

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Задачи, решаемые с помощью перенаправления портов Перенаправление портов может потребоваться в следующих ситуациях.• Если вы перемещаете сервер с одного компьютера на другой, но по каким-либо причинам не можете изменить конфигурацию сервера DNS. Перенаправление портов


Опции iptables для перенаправления портов

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Опции iptables для перенаправления портов Обеспечить перенаправление портов на компьютере под управлением Linux, поддерживающем NAT, можно различными способами. Один из них состоит в использовании iptables. Соответствующая команда имеет следующий вид:# iptables -t nat -A PREROUTING -p tcp -i


11.7. Добавление перенаправления для ladsh

Из книги C++ для начинающих автора Липпман Стенли

11.7. Добавление перенаправления для ladsh Теперь, когда мы рассмотрели основные манипуляции с файлами, мы можем научить ladsh перенаправлению ввода и вывода через файлы и каналы. ladsh2.с, который мы представим здесь, работает с каналами (описанными символом | в командах ladsh, как


Альтернативная навигация

Из книги Графология XXI века автора Щеголев Илья Владимирович

Альтернативная навигация Наша практика показала, что наличие альтернативной навигации в каталоге товаров сильно упрощает работу посетителей.Помимо классического разбиения товаров на категории и подкатегории можно предлагать навигацию по брендам, ценам, популярности,


16.3.9. Директивы перенаправления

Из книги автора

16.3.9. Директивы перенаправления Довольно часто нужно перенаправить пользователя на другой ресурс: например, вы сменили хостера и из-за этого изменилось имя вашего сайта. Обычно при таком «переезде» у вас есть определенное время, чтобы сообщить вашим пользователям об


Пример 10-4. Обработка списка файлов в цикле for

Из книги автора

Пример 10-4. Обработка списка файлов в цикле for #!/bin/bash# list-glob.sh: Создание список файлов в цикле for с использованием# операции подстановки имен файлов ("globbing").echofor file in *do ls -l "$file" # Список всех файлов в $PWD (текущем каталоге). # Напоминаю, что символу "*" соответствует любое имя


Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд

Из книги автора

Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд #!/bin/bash# уЩЫЬ for гЯ [гаЩгЫЯЭ], гЯкФСЮЮйЭ г аЯЭЯниР аЯФгдСЮЯзЫЩ ЫЯЭСЮФ.NUMBERS="9 7 3 8 37.53"for number in `echo $NUMBERS` # for number in 9 7 3 8 37.53do echo -n "$number "doneecho exit 0Более сложный пример использования подстановки


17.4.3. Альтернативная иерархия классов

Из книги автора

17.4.3. Альтернативная иерархия классов Хотя наша иерархия классов Query представляется вполне приемлемой, она вовсе не является единственно возможной. Например, AndQuery и OrQuery связаны с бинарной операцией, поэтому они в какой-то степени дублируют друг друга. Можно вынести все


9. Форма

Из книги автора

9. Форма Признаки слева направо (рис. 189): Рис. 189• форма почерка угловатая;• форма почерка округлая;• форма почерка школьная;• форма почерка с печатными буквами;• форма почерка каллиграфическая;• форма почерка