書き込み用にファイルを開いてそのファイル記述子を使用するためのシェル構文は次のとおりです。
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
では、明示的なファイル記述子に使用できるのは1桁のみです。 ksh93r
以上では、次の形式を使用して10を超えるファイル記述子を開くことができます。
{var}>filename
ksh
は、10以上の使用可能なファイル記述子を選択し、ファイル記述子番号を変数var
に格納します。
$ exec {var1}>/tmp/test1
$ echo "$var1"
10
$ exec {var2}>/tmp/test2
$ echo "$var2"
11