Я надеюсь, что кто-то сможет объяснить явление. Поскольку заголовок указывает, что я узнаю о перенаправлении файловых дескрипторов. По пути я столкнулся с вопросом, связанным с использованием символа перенаправления, особенно при настройке постоянного перенаправления. Я заметил, что в некоторых случаях, кажется, не имеет значения, пользуюсь ли я <
или >
. Например, работая со следующим сценарием:Bash: перенаправление дескрипторов файлов
#!/bin/bash
#Setting file descriptor 3 to redirect to STDIN
exec 3<&0
#Setting STDIN to read from input file
exec 0<inputFile
while read var
do
echo "$var"
done
#Setting STDIN to read from file descriptor 3 which is redirected to the default STDIN
exec 0<&3
read -p "Enter a word:" word
echo "$word"
К моему удивлению, это, кажется, не имеет значения, если я использую >
или <
в заявлениях exec 3<&0
или exec 0<&3
. В любом из этих утверждений кажется, что если я заменю символы переадресации, я все равно получаю тот же результат. Кажется очевидным, что делает одни и те же типы изменений в линии:
exec 0<inputFile
против
exec 0>inputFile
не дает те же результаты, потому что перенаправлять STDIN в файл не то же самое как перенаправление файла в STDIN.
Так что мои вопросы:
<
против>
:# Why aren't there any differences between these two statements? exec 3<&0 exec 3>&0
3<&0
против0<&3
:# Why is there a difference between these two statements? exec 3<&0 exec 0<&3
Этот тип перенаправления достаточно сложно для меня, чтобы обернуть мою голову и держать прямо без этих несоответствий. Любое объяснение (ы) будет принята с благодарностью.
Я слегка отредактирован свой пост, чтобы отразить оба вопроса, которые вы просили. Не стесняйтесь отскакивать или редактировать дальше, если вам не нравятся мои изменения! –