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

Пример 16-1. Перенаправление stdin с помощью exec

Пример 16-1. Перенаправление stdin с помощью exec

#!/bin/bash

# Перенаправление stdin с помощью 'exec'.

exec 6<&0 # Связать дескр. #6 со стандартным вводом (stdin).

# Сохраняя stdin.

exec < data-file # stdin заменяется файлом "data-file"

read a1 # Читается первая строка из "data-file".

read a2 # Читается вторая строка из "data-file."

echo

echo "Следующие строки были прочитаны из файла."

echo "-----------------------------------------"

echo $a1

echo $a2

echo; echo; echo

exec 0<&6 6<&-

# Восстанавливается stdin из дескр. #6, где он был предварительно сохранен,

#+ и дескр. #6 закрывается ( 6<&- ) освобождая его для других процессов.

#

# <&6 6<&- дает тот же результат.

echo -n "Введите строку "

read b1 # Теперь функция "read", как и следовало ожидать, принимает данные с обычного stdin.

echo "Строка, принятая со stdin."

echo "--------------------------"

echo "b1 = $b1"

echo

exit 0

Аналогично, конструкция exec >filename перенаправляет вывод на stdout в заданный файл. После этого, весь вывод от команд, который обычно направляется на stdout, теперь выводится в этот файл.

Оглавление книги


Генерация: 1.465. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз