Це буквально, {fd}не є заповнювачем. У мене є сценарій, який робить це, і не створює джерела ні в чому, а також не посилається на {fd} де-небудь ще. Це дійсний баш?
exec {fd}</dev/watchdog
Це буквально, {fd}не є заповнювачем. У мене є сценарій, який робить це, і не створює джерела ні в чому, а також не посилається на {fd} де-небудь ще. Це дійсний баш?
exec {fd}</dev/watchdog
Відповіді:
Замість того, щоб вибрати дескриптор файлу і сподіватися, що він доступний:
exec 4< /dev/watchdog # Was 4 in use? Who knows?
це позначення просить оболонку вибрати дескриптор файлу, який наразі не використовується, відкрити файл для читання в цьому дескрипторі та призначити номер даній змінній ( fd).
$ exec {fd}< /dev/watchdog
$ echo $fd
10
REDIRECTIONS. Це насправді не вискакує на вас, оскільки вони не дають явного прикладу.
/dev/watchdogне існує і в Mac OS X; це специфічний для Linux пристрій.
Форма:
{var}<filename
зробив файл оболонки відкритим filenameдля читання та збереження номера дескриптора файлу у змінній var. Між {var}операторами переадресації та переадресації не допускається місця , а число дескрипторів файлів буде більшим або рівним 10.
Ця функція була оригінальна з ksh(починаючи з версії ksh93r в 2006 році), bashскопіював його багато пізніше bash-4.1-alphaз 2010 року zshтакож зміна раніше ніж bashз zsh 4.3.42007 року.
Це пояснено в посібнику Баша про перенаправлення .
Кожному перенаправленню, якому може передувати номер дескриптора файлу, замість цього може передувати слово форми { varname }. У цьому випадку для кожного оператора перенаправлення, за винятком
>&-і<&-, оболонка виділить дескриптор файлу більше 10 і призначить його { varname }. Якщо>&-або<&-передує { varname }, значення varname визначає дескриптор файлу, який потрібно закрити.