Io-Redirection

用 ksh 打開超過 10 個文件描述符

  • January 17, 2016

打開文件以進行寫入和使用其文件描述符的 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 個文件描述符?

ksh中,您只能將單個數字用於顯式文件描述符。使用ksh93r及以上,您可以使用以下形式打開 10 多個文件描述符:

{var}>filename

bash後來zsh複製了這個功能)

ksh將選擇大於或等於 10 的可用文件描述符,將文件描述符編號儲存在變數中var

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

引用自:https://unix.stackexchange.com/questions/255843