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

$RANDOM: 产生随机整数


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


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

#/bin/bash
# 随机抽取一张扑克

Suites="Clubs
Diamonds
Hearts
Spades"

Denominations="2
3
4
5
6
7
8
9
10
Jack
Queen
King
Ace"

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"     # False
n=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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值