#!/bin/bash fn="shuffle" seed=0 numShuffles=0 # int _shuffle() { gawk -v seed="$seed" \ -v numShuffles="$numShuffles" \ -v inFile="$inFile" \ ' BEGIN { # optional -- seed the random number generator if ( seed != "" ) { srand(seed) } # build the deck sizeofFile=0 while ( getline list[sizeofFile] < inFile > 0 ) { sizeofFile++ } # shuffle the deck if ( numShuffles == "" || numShuffles <= 0 ) { numShuffles=2*sizeofFile } for (i=0; i&2 "$fn: seed is $seed" shift ;; -n) numShuffles="$2" echo >&2 "$fn: shuffle the deck $numShuffles times" shift ;; -h|-?) echo >&2 "usage: $fn [-s seed] [-n num-shuffles] file" echo >&2 " $fn takes a text file and 'shuffles' the lines inside it randomly" return 0 ;; *) break ;; esac shift done inFile="$1" if [ ! -f "$inFile" ] ; then echo >&2 "$fn: no input file" return 1 fi _shuffle "$inFile" return $? } _main $* exit $?