在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)
我知道这个线程是老的,但相信最好的答案是缺少,并将对那些来到这里寻找解决方案的人有用。
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