在Bash中,如何找到最小编号的未使用的文件描述符?

在Bash脚本中,是否可以在“尚未使用的编号最小的文件描述符”上打开文件?

我已经找到了如何做到这一点,但似乎Bash总是要求你指定的数字,例如。喜欢这个:

exec 3< /path/to/a/file    # Open file for reading on file descriptor 3.

相比之下,我想能够做一些事情

my_file_descriptor=$(open_r /path/to/a/file)

这将打开“文件”以读取尚未使用的编号最小的文件描述符,并将该编号分配给变量“my_file_descriptor”。

我知道这个线程是老的,但相信最好的答案是缺少,并将对那些来到这里寻找解决方案的人有用。

Bash和Zsh内置的方式来找到未使用的文件描述符,而不必编写脚本。 (我发现没有这样的事情破折号,所以上面的答案可能仍然有用。)

注意:这找到最低的未使用文件描述符> 10,不是最低的整体。

$ man bash /^REDIRECTION (paragraph 2)
$ man zshmisc /^OPENING FILE DESCRIPTORS

示例使用bsh和zsh。

打开一个未使用的文件描述符,并将编号分配给$ FD:

$ exec {FD}>test.txt
$ echo line 1 >&$FD
$ echo line 2 >&$FD
$ cat test.txt
line 1
line 2
$ echo $FD
10  # this number will vary

完成后关闭文件描述符:

$ exec {FD}>&-

下面显示文件描述符现在已关闭:

$ echo line 3 >&$FD
bash: $FD: Bad file descriptor
zsh: 10: bad file descriptor

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...