Книга: Искусство программирования на языке сценариев командной оболочки
Пример 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
- Пример 16-4. Перенаправление в цикл while
- Пример 16-5. Альтернативная форма перенаправления в цикле while
- Пример 16-6. Перенаправление в цикл until
- Пример 16-7. Перенаправление в цикл for
- Пример 16-8. Перенаправление устройств (stdin и stdout) в цикле for
- Пример 16-9. Перенаправление в конструкции if/then
- Пример 16-10. Файл с именами "names.data", для примеров выше
- Пример 16-9. Перенаправление в конструкции if
- Пример 16-4. Перенаправление в цикл while
- Пример 16-7. Перенаправление в цикл for
- Пример 16-10. Файл с именами "names.data", для примеров выше
- Пример установочного скрипта
- Пример из практики
- Сохранение информации о пользователях при миграции
- Информация заголовочной страницы (Database header)
- Форматы лид-магнитов
- Простейшие трансформации
- Информация страниц данных
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ