使用 ksh 打开超过 10 个文件描述符

使用 ksh 打开超过 10 个文件描述符

打开文件进行写入和使用其文件描述符的 shell 语法是:

exec 3>output.log

使用 bash 和 zsh 您还可以编写:

exec 13>output.log

因此,稍后在脚本中您可以像这样重定向输出:

generate-partx >&3
generate-partx >&13

并关闭它们:

exec 3>&-
exec 13>&-

原始的 ksh(测试过 88 和 93)似乎只支持使用该语法的文件描述符编号 0 到 9。

当然,有人可能会争辩说 10 个打开的文件描述符对于每个人来说应该足够了和/或没有人再使用 ksh。

但有时事实并非如此,而你却是。

因此,我的问题是:如何在 ksh 脚本中打开超过 10 个文件描述符?

答案1

在 中ksh,您只能使用单个数字作为显式文件描述符。有了ksh93r以上的功能,您可以使用以下形式打开 10 个以上的文件描述符:

{var}>filename

(后来复制bashzsh这个功能)

ksh将选择大于或等于 10 的可用文件描述符,将文件描述符编号存储在变量中var

$ exec {var1}>/tmp/test1
$ echo "$var1"
10
$ exec {var2}>/tmp/test2
$ echo "$var2"
11

相关内容