シェルスクリプトで桁数固定で乱数を取得する方法
目次
スポンサードリンク
シェルスクリプトで乱数を取得する際は $RANDOM を使用します。 $RANDOMはBashのシェルスクリプトで利用できる特別な変数で、0から32767までの間のランダムな整数を生成します。$RANDOMは参照する度に毎回異なる値が得られます。
桁数固定で乱数を取得する方法
$RANDOMで取得できる値は0から始まるので桁数は固定されていません。桁数を固定したい時は printf コマンドと組み合わせて変数を取得します。 下記サンプルは、$RANDOMの値の先頭に0を補完(パディング)して桁数を5桁に固定しています。ファイル名、IDなど乱数を固定の桁数で取得したいときに役立つテクニックです。
#!/bin/bash
# 先頭に0を補完して5桁に
random=$(printf "%05d" $RANDOM)
echo $random
exit 0
printfコマンドは指定したフォーマットで出力を生成するコマンドです。フォーマット指定は %05d の部分です。%05d の0がゼロ埋めを表し、5が桁数を指定している部分です。
- %: フォーマット指定子の開始
- 0: 数値の左側を0で埋める指定
- 5: 出力の桁数
- d: 整数として出力
上記サンプルを test.sh として保存し何度か実行してみます。5桁のランダムな数値を取得することができました。
[root@hostname tmp]# ./test.sh
09692
[root@hostname tmp]# ./test.sh
09857
[root@hostname tmp]# ./test.sh
23682
[root@hostname tmp]# ./test.sh
31298
乱数の桁数を変更する方法
上記のサンプルは5桁の乱数ですが、桁数を変更したい場合は printf コマンドのフォーマット識別子を変更します。下記サンプルは 8桁の乱数を取得しています。
# 8桁の乱数を生成
random=$(printf "%08d" $RANDOM)
echo "8桁の乱数は: $random"
シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。
最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。
Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】
Search
Recent Posts
- OpenSSHのエラー「bad ownership or modes for chroot directory component」の原因と解消方法
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法
- RHEL系Linuxでリポジトリを一覧表示するコマンド(dnf repolist)