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...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

random() function in C.)<br />

Example 9−26. Reseeding RANDOM<br />

#!/bin/bash<br />

# seeding−random.sh: Seeding the RANDOM variable.<br />

MAXCOUNT=25<br />

# How many numbers to generate.<br />

random_numbers ()<br />

{<br />

count=0<br />

while [ "$count" −lt "$MAXCOUNT" ]<br />

do<br />

number=$RANDOM<br />

echo −n "$number "<br />

let "count += 1"<br />

done<br />

}<br />

echo; echo<br />

RANDOM=1<br />

random_numbers<br />

# Setting RANDOM seeds the random number generator.<br />

echo; echo<br />

RANDOM=1<br />

random_numbers<br />

# Same seed for RANDOM...<br />

# ...reproduces the exact same number series.<br />

#<br />

# When is it useful to duplicate a "random" number series?<br />

echo; echo<br />

RANDOM=2<br />

random_numbers<br />

# Trying again, but with a different seed...<br />

# gives a different number series.<br />

echo; echo<br />

# RANDOM=$$ seeds RANDOM from process id of script.<br />

# It is also possible to seed RANDOM from 'time' or 'date' commands.<br />

# Getting fancy...<br />

SEED=$(head −1 /dev/urandom | od −N 1 | awk '{ print $2 }')<br />

# Pseudo−random output fetched<br />

#+ from /dev/urandom (system pseudo−random device−file),<br />

#+ then converted to line of printable (octal) numbers by "od",<br />

#+ finally "awk" retrieves just one number for SEED.<br />

RANDOM=$SEED<br />

random_numbers<br />

echo; echo<br />

exit 0<br />

The /dev/urandom device−file provides a means of generating much more "random" pseudorandom<br />

numbers than the $RANDOM variable. dd if=/dev/urandom of=targetfile bs=1<br />

Chapter 9. Variables Revisited 100

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

Saved successfully!

Ooh no, something went wrong!