Это буквально, а {fd}не заполнитель. У меня есть скрипт, который делает это, и ни в коем случае не использует источник, и нигде не ссылается {fd} Это действительный Bash?
exec {fd}</dev/watchdog
Это буквально, а {fd}не заполнитель. У меня есть скрипт, который делает это, и ни в коем случае не использует источник, и нигде не ссылается {fd} Это действительный Bash?
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 года.
Это объясняется в разделе руководства Bash по перенаправлениям .
Каждому перенаправлению, которому может предшествовать номер дескриптора файла, вместо этого может предшествовать слово вида { varname }. В этом случае для каждого оператора перенаправления, кроме
>&-и<&-, оболочка выделит дескриптор файла больше 10 и присвоит его { varname }. Если>&-или<&-предшествует { varname }, значение varname определяет дескриптор файла для закрытия.