How to select a random item from an array in shell How to select a random item from an array in shell arrays arrays

How to select a random item from an array in shell


Change the line where you define selectedexpression to

selectedexpression=${expressions[$RANDOM % ${#expressions[@]} ]}

You want your index into expression to be a random number from 0 to the length of the expression array. This will do that.


arr[0]="Ploink Poink"arr[1]="I Need Oil"arr[2]="Some Bytes are Missing!"arr[3]="Poink Poink"arr[4]="Piiiip Beeeep!!"arr[5]="Hello"arr[6]="Whoops! I'm out of memmory!"rand=$[$RANDOM % ${#arr[@]}]echo $(date)echo ${arr[$rand]}


Here's another solution that may be a bit more random than Jacob Mattison's solution (hard to say from the jot manpages):

declare -a expressions=('Ploink' 'I Need Oil' 'Some Bytes are Missing' 'Poink Poink' 'Piiiip Beeeep' 'Hello' 'Whoops I am out of memory')index=$( jot -r 1  0 $((${#expressions[@]} - 1)) )selected_expression=${expressions[index]}