書き込み用にファイルを開き、ファイル記述子を使用するシェル構文は次のとおりです。
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