исполнительная команда с дескриптором файла

Ниже команд Unix хорошо работают, когда я выполняю его как сценарий оболочки:

#!/bin/bash
# Redirecting stdin using 'exec'.


exec 6<&0          # Link file descriptor #6 with stdin.
                   # Saves stdin.

exec < data-file   # stdin replaced by file "data-file"

read a1            # Reads first line of file "data-file".
read a2            # Reads second line of file "data-file."

echo
echo "Following lines read from file."
echo "-------------------------------"
echo $a1
echo $a2

echo; echo; echo

exec 0<&6 6<&-
#  Now restore stdin from fd #6, where it had been saved,
#+ and close fd #6 ( 6<&- ) to free it for other processes to use.
#
# <&6 6<&-    also works.

echo -n "Enter data  "
read b1  # Now "read" functions as expected, reading from normal stdin.
echo "Input read from stdin."
echo "----------------------"
echo "b1 = $b1"

echo

exit 0

Но когда я выполняю команды индивидуально в терминале, ниже команды дает 'команду, не найденную' ошибка:

exec < data-file
1
задан 4 December 2016 в 22:17

1 ответ

Если Вы дадите команду exec < file, то текущая оболочка удара считает свой вход от файл , а не станд. - в.

я принимаю то, что происходит, когда Вы даете команды индивидуально в терминале, исполнительные работы команды правильно, и Ваша текущая (интерактивная) оболочка удара начинает читать data-file (а не Ваша клавиатура). Я предполагаю, что файл данных не содержит команды удара, и поэтому удар отвечает командой, не найденной.

4
ответ дан 3 December 2019 в 06:56

Другие вопросы по тегам:

Похожие вопросы: