shell 生成隨機數(shù)的實現(xiàn)方法總結
shell 生成隨機數(shù)的實現(xiàn)方法總結
1. 使用系統(tǒng)的 $RANDOM 變量
mimvp@ubuntu:~$ echo $RANDOM 17617
$RANDOM 的范圍是 [0, 32767]
如需要生成超過32767的隨機數(shù),可以用以下方法實現(xiàn)。
例:生成400000~500000的隨機數(shù)
#!/bin/bash function rand(){ min=$1 max=$(($2-$min+1)) num=$(($RANDOM+1000000000)) #增加一個10位的數(shù)再求余 echo $(($num%$max+$min)) } rnd=$(rand 400000 500000) echo $rnd exit 0
2. 使用date +%s%N
例:生成1~50的隨機數(shù)
#!/bin/bash function rand(){ min=$1 max=$(($2-$min+1)) num=$(date +%s%N) echo $(($num%$max+$min)) } rnd=$(rand 1 50) echo $rnd exit 0
3. 使用/dev/random 和 /dev/urandom
/dev/random 存儲著系統(tǒng)當前運行環(huán)境的實時數(shù)據(jù),是阻塞的隨機數(shù)發(fā)生器,讀取有時需要等待。
/dev/urandom 非阻塞隨機數(shù)發(fā)生器,讀取操作不會產(chǎn)生阻塞。
例:使用/dev/urandom生成100~500的隨機數(shù),使用urandom避免阻塞。
#!/bin/bash function rand(){ min=$1 max=$(($2-$min+1)) num=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}') echo $(($num%$max+$min)) } rnd=$(rand 100 500) echo $rnd exit 0
4. 使用 linux uuid
uuid 全稱是通用唯一識別碼,格式包含32個16進制數(shù)字,以'-‘連接號分為5段。形式為8-4-4-4-12 的32個字符。
mimvp@ubuntu:~/shell$ cat /proc/sys/kernel/random/uuid fd496199-372a-403e-8ec9-bf4c52cbd9cd
例:使用linux uuid 生成100~500隨機數(shù)
#!/bin/bash function rand(){ min=$1 max=$(($2-$min+1)) num=$(cat /proc/sys/kernel/random/uuid | cksum | awk -F ' ' '{print $1}') echo $(($num%$max+$min)) } rnd=$(rand 100 500) echo $rnd exit 0
5. 生成隨機字符串
例:生成10位隨機字符串
#使用date 生成隨機字符串 date +%s%N | md5sum | head -c 10 #使用 /dev/urandom 生成隨機字符串 cat /dev/urandom | head -n 10 | md5sum | head -c 10
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Shell腳本函數(shù)傳遞參數(shù)的實現(xiàn)方法
本文主要介紹了Shell腳本函數(shù)傳遞參數(shù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07crontab每10秒執(zhí)行一次的實現(xiàn)方法
下面小編就為大家?guī)硪黄猚rontab每10秒執(zhí)行一次的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04Shell腳本命令行批處理bash?sh?cmd?bat函數(shù)極簡學法
這篇文章主要為大家介紹了Shell腳本中文英文多語言國際化和命令行批處理(bash?sh?cmd?bat)中定義函數(shù)的簡單寫法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-09-09bash shell和dash shell的區(qū)別詳解
本文主要介紹了bash shell和dash shell的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05Linux壓縮和解壓命令大全之tar、gzip和zip詳細教程
本文介紹了常用的壓縮和解壓命令,包括tar、gzip和zip,通過使用這些命令,我們可以方便地對文件和目錄進行壓縮和解壓操作,從而節(jié)省存儲空間和提高傳輸效率,需要的朋友可以參考下2023-09-09