kshを使用して10個以上のファイル記述子を開きます。

kshを使用して10個以上のファイル記述子を開きます。

書き込み用にファイルを開き、ファイル記述子を使用するシェル構文は次のとおりです。

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

(この機能は後でコピーされbashました)zsh

ksh10以上の使用可能なファイル記述子が選択され、ファイル記述子番号が変数に保存されますvar

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

関連情報