サイト内検索:
getno : シーケンシャルな番号を取得する
使い方とオプション
getno <num> <file>
-r repeat
-i<init> initial value at repeat
-u unlimited digits
-m<max> maximum value
-n<range> value range
<num> で指定した数の連続した番号を、<file> に書かれている次の番号から出力します。出力最終番号が <file> に上書きされます。
<file> の読み出しから上書きまでが排他制御されます。
番号は、<file> に書かれている値の桁数の固定長(前0)で出力されます。桁数の制限は有りません。最大値(ALL 9)を超える出力をしようとした時はエラーになります。
-u オプションを指定した場合は可変長(前0無し)で出力されます。桁数の制限は無く、最大値の制限も有りません。-r オプションは併用できません。また <file> の値の前0は意味を持ちません。
-m オプションを指定すると、最大値が <max> になります。<max> の前0は無視されます。-u オプションの有無にかかわらず、<max> を超える出力をしようとした時はエラーになります。-u オプションを指定していない場合、<max> の桁数が <file> の値の桁数より大きいとエラーになります。
-r オプションを指定した場合は、最大値まで出力した後、値が初期値(ALL 0)に戻り継続して出力されます。-i オプションで初期値を <init> に変更できます。<init> の前0は無視されます。<init> の値が最大値を超えている場合はエラーとなります。
-n オプションでは値の範囲を指定できます。範囲は加減と上限を “-” で連結して示します。複数の範囲を “,” で連結して指定できます。-m オプションは併用できません。
fileより3桁の連番を3つ出力
$ cat file
000
$ getno 3 file
001
002
003
$ cat file
003 <- 実行後、file の中身は最後に出力した番号になります。
(注)桁数の最終値を超える指定はエラーとなります。
$ cat file
997
$ getno 5 file
Error(559)[getno.NEW] : exceeds the maximum value <- エラー
$ echo $?
1
$ cat file
997 <- 3桁なので最大値は 999、出力数指定は5つなので 999 を
超える指定がされている。
$ cat file
097
$ getno -u 5 file
98 <- file の前0は無視されます。
99
100 <- 桁数は自動的に増えます。
101
102
$ cat file
102
$ cat file
05
$ getno -m8 5 file
Error(559)[getno.NEW] : exceeds the maximum value
$ cat file
05
$ getno -u -m8 5 file
Error(497)[getno.NEW] : exceeds the maximum value
$ cat file
05
file より2桁の連番を4つ出力
$ cat file
97
$ getno -r 4 file
98
99
00 <- 99の次は 00 より継続して連番出力
01
$ cat file
01
最大値を指定した場合
$ cat file
30
$ getno -r -m32 4 file
31
32
00
01
$ cat file
01
初期値を指定した場合
$ cat file
97
$ getno -r -i2 4 file
98
99
02 <- 99 の次は指定した値 02 より継続して連番出力
03
$ cat file
03
$ cat file
017
$ getno -n10-19,100-109 4 file
018 <- 10-19 による出力
019
100 <- 100-109 による出力
101
$ cat file
101
-r オプションを併用した場合
$ cat file
107
$ getno -r -n10-19,100-109 4 file
108 <- 100-109 による出力
109
010 <- 10-19 による出力
011
このコマンドは、/home/TOOL 下に配置されていないと動作しません。
取得する番号の桁数に制限は有りませんが、個数は 2,147,483,647 個以下に制限されています。
NFS でリモートマウントされたディスク上にファイル <file> がある場合、
$ ssh "NFS サーバ" "getno 1 <file>"
のように ssh により NFS サーバー上で getno を起動する必要があります。
Version : Tue Jun 18 19:00:37 JST 2019
Edition : 1
© 2021 Universal Shell Programming Laboratory site