Ouvrir plus de 10 descripteurs de files avec ksh

La syntaxe du shell pour ouvrir un file pour écrire et utiliser son descripteur de file est:

exec 3>output.log 

Avec bash et zsh vous pouvez aussi écrire:

 exec 13>output.log 

Ainsi, plus tard dans votre script, vous pouvez redirect la sortie comme ceci:

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

Et pour les fermer:

 exec 3>&- exec 13>&- 

Le ksh original (testé 88 et 93) ne semble supporter les descripteurs de files de 0 à 9 qu'avec cette syntaxe.

Bien sûr, on pourrait dire que 10 descripteurs de files ouverts devraient être suffisants pour tout le monde et / ou que personne n'utilise plus de ksh.

Mais parfois ce n'est pas et vous êtes.

Ainsi, ma question: Comment ouvrir plus de 10 descripteurs de files dans un script ksh?

En ksh , vous ne pouvez utiliser qu'un seul chiffre pour le descripteur de file explicite. Avec ksh93r et ci-dessus, vous pouvez ouvrir plus de 10 descripteurs de files en utilisant le formulaire:

 {var}>filename 

( bash et zsh copié cette fonctionnalité plus tard) .

ksh choisit le descripteur de file disponible supérieur ou égal à 10, stocke le numéro du descripteur de file dans la variable var :

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