打开文件进行写入和使用其文件描述符的 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
ksh
将选择大于或等于 10 的可用文件描述符,将文件描述符编号存储在变量中var
:
$ exec {var1}>/tmp/test1
$ echo "$var1"
10
$ exec {var2}>/tmp/test2
$ echo "$var2"
11