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.

# could even do this as an alias.
function rolldice
  return 'shuf -i 1-6 -n1'
total='expr $total + $roll'
echo "First roll was $roll"
total='expr $total + $roll'
echo "Second roll was $roll"
total='expr $total + $roll'
echo "Third roll was $roll"
echo "Total is $total"
$ ./
First roll was 5
Second roll was 3
Third roll was 2
Total is 10
$ ./
First roll was 3
Second roll was 4
Third roll was 5
Total is 12
$ ./
First roll was 4
Second roll was 2
Third roll was 2
Total is 8

Card Dealer

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

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.