Я не знаю ничего более простого, чем next_available_fd
, но получить желаемую функциональность (временное перенаправление дескриптора файла, не затрагивая его вне функции) можно в bash следующим образом (я не знать о ш):
exec 3>file3
exec 1>file1
echo "something">&3
echo "something else"
f31 () {
echo "something">&3
}
f31 3>&1
f13 () {
echo "something else"
}
f13 >&3
echo "something">&3
echo "something else"
Полученный file1
:
something else
something
something else
И file3
:
something
something else
something
Что показывает, что перенаправление ограничено вызовом функции в каждом случае.