O'Reilly logo

Shell Scripting: Expert Recipes for Linux, Bash, and More by Steve Parker

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

shuf

shuf is a useful sorter, which normally acts with random input to produce randomly shuffled output, although you can provide your own “random” source so that it produces repeatable results every time. It can work on input files or on numeric ranges. It can also be very useful when working on arrays.

Dice Thrower

This simple script throws three dice and gives you the total. This also shows you how putting something like this into a function makes it more flexible and easier to integrate into a script; not only is the main body of code simpler and easier to read, but you can change the implementation once and the effect ripples through the rest of the script.

download.eps
cat dice.sh
#!/bin/bash
# could even do this as an alias.
function rolldice
{
  return 'shuf -i 1-6 -n1'
}
total=0
rolldice
roll=$?
total='expr $total + $roll'
echo "First roll was $roll"
rolldice
roll=$?
total='expr $total + $roll'
echo "Second roll was $roll"
rolldice
roll=$?
total='expr $total + $roll'
echo "Third roll was $roll"
echo
echo "Total is $total"
$ ./dice.sh
First roll was 5
Second roll was 3
Third roll was 2
Total is 10
$ ./dice.sh
First roll was 3
Second roll was 4
Third roll was 5
Total is 12
$ ./dice.sh
First roll was 4
Second roll was 2
Third roll was 2
Total is 8
$

dice.sh

Card Dealer

Slightly more advanced is a routine to pick random playing cards. This script uses shuf with two arrays to randomize ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required