'exec {fd} 是什么意思

'exec {fd} 是什么意思

这是字面意思,{fd}不是占位符。我有一个脚本可以执行此操作,并且不引用任何内容,也不引用其他任何地方的 {fd} 。这是有效的 bash 吗?

exec {fd}</dev/watchdog

答案1

而不必选择一个文件描述符并希望它可用:

exec 4< /dev/watchdog  # Was 4 in use? Who knows?

此表示法要求 shell 选择当前未使用的文件描述符,打开文件以在该描述符上读取,并将数字分配给给定变量 ( fd)。

$ exec {fd}< /dev/watchdog
$ echo $fd
10

答案2

表格:

{var}<filename

使 shell 打开文件filename进行读取并将文件描述符编号存储在变量 中var。和 重定向运算符之间不允许有空格{var},并且文件描述符编号将大于或等于10

该功能最初来自ksh(2006 年的 ksh93r 版本),bash后来bash-4.1-alpha从 2010 年开始复制它。也比2007 年zsh更早地进行了更改。bashzsh 4.3.4

答案3

Bash 手册部分对此进行了解释重定向

每个重定向前面可能带有文件描述符编号,但前面可能带有以下形式的单词 {变量名}。在这种情况下,对于除>&-和 之外的每个重定向运算符<&-,shell 都会分配一个大于 10 的文件描述符并将其分配给 {变量名}。如果>&-<&-前面有 {变量名}, 的价值变量名定义要关闭的文件描述符。

相关内容