$RANDOM: 产生随机整数及双圆括号结构

来源:互联网 发布:百度域名注册服务费用 编辑:程序博客网 时间:2024/05/22 15:06

$RANDOM: 产生随机整数


$RANDOM 是Bash的内部函数 (并不是常量), 这个函数将返回一个伪随机整数, 范围在0 - 32767之间.


例:从一副扑克牌中取出一张随机的牌.

#/bin/bash# 随机抽取一张扑克Suites="ClubsDiamondsHeartsSpades"Denominations="2345678910JackQueenKingAce"suite=($Suites)denomination=($Denominations)num_suites=${#suite[*]}num_denominations=${#denomination[*]}echo -n "${denomination[$((RANDOM%num_denominations))]} of "echo ${suite[$((RANDOM%num_suites))]} exit 0

在一个指定范围内产生随机数的技巧.

# 在6到30之间产生随机数.rnumber=$((RANDOM%25+6))# 还是在6-30之间产生随机数,#+但是这个数还必须能被3整除.rnumber=$(( RANDOM%27/3*3+6))

范围公式:

rnumber=$(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min))

/dev/urandom 设备文件提供了一种比单独使用$RANDOM更好的, 能够产生更加”随机”的随机数的方法. dd if=/dev/urandom of=targetfile bs=1 count=XX 能够产生一个很分散的伪随机数序列. 然而, 如果想要将这个数赋值到一个脚本文件的变量中, 还需要可操作性, 比如使用od命令,或者使用dd命令, 或者通过管道传递到md5sum命令中.

date命令也可以用来产生伪随机整数序列.


双圆括号结构


与let命令很相似, ((…))结构允许算术扩展和赋值.
例:

a=$(( 5+3 ))               # 与let "a=5+3"等价.

双圆括号结构也被认为是在Bash中使用C语言风格变量操作的一种处理机制.


例:C语言风格的变量操作.

#!/bin/bash# 使用((...))结构操作一个变量,C语言风格的变量操作.echo(( a = 23 ))        # c语言风格的变量赋值,"="两边允许有空格.echo "a (initial value) = $a"(( a++ ))           # c语言风格的后置自加.echo "a (after a++) = $a"# (( a-- ))、(( ++a ))、(( --a ))类似.# 注意:就像在c语言中一样,前置或后置自减操作会产生一些不同的副作用.n=1; let --n && echo "True" || echo "False"     # Falsen=1; let n-- && echo "True" || echo "False"     # True echo (( t = a<45?7:11 ))                     #c语言风格的三元操作.echo "If a<45,then t = 7,else t = 11."echo "t = $t"exit 0
阅读全文
0 0