27.08.2015 Views

Advanced Bash−Scripting Guide

Advanced Bash-Scripting Guide - Nicku.org

Advanced Bash-Scripting Guide - Nicku.org

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Advanced</strong> <strong>Bash−Scripting</strong> <strong>Guide</strong><br />

9.6. $RANDOM: generate random integer<br />

$RANDOM is an internal Bash function (not a constant) that returns a pseudorandom integer in the range 0 −<br />

32767. $RANDOM should not be used to generate an encryption key.<br />

Example 9−23. Generating random numbers<br />

#!/bin/bash<br />

# $RANDOM returns a different random integer at each invocation.<br />

# Nominal range: 0 − 32767 (signed 16−bit integer).<br />

MAXCOUNT=10<br />

count=1<br />

echo<br />

echo "$MAXCOUNT random numbers:"<br />

echo "−−−−−−−−−−−−−−−−−"<br />

while [ "$count" −le $MAXCOUNT ] # Generate 10 ($MAXCOUNT) random integers.<br />

do<br />

number=$RANDOM<br />

echo $number<br />

let "count += 1" # Increment count.<br />

done<br />

echo "−−−−−−−−−−−−−−−−−"<br />

# If you need a random int within a certain range, use the 'modulo' operator.<br />

# This returns the remainder of a division operation.<br />

RANGE=500<br />

echo<br />

number=$RANDOM<br />

let "number %= $RANGE"<br />

echo "Random number less than $RANGE −−− $number"<br />

echo<br />

# If you need a random int greater than a lower bound,<br />

# then set up a test to discard all numbers below that.<br />

FLOOR=200<br />

number=0 #initialize<br />

while [ "$number" −le $FLOOR ]<br />

do<br />

number=$RANDOM<br />

done<br />

echo "Random number greater than $FLOOR −−− $number"<br />

echo<br />

# May combine above two techniques to retrieve random number between two limits.<br />

number=0 #initialize<br />

while [ "$number" −le $FLOOR ]<br />

do<br />

number=$RANDOM<br />

let "number %= $RANGE" # Scales $number down within $RANGE.<br />

Chapter 9. Variables Revisited 96

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!