Uma maneira comum de misturar uma lista é percorrer os elementos e trocar com outro elemento aleatoriamente.
#! /bin/bash -
list=(1 2 3 4 5 6 7 8 9 0)
random_list=("${list[@]}")
n=${#random_list[@]}
for ((i = 0; i < n; i++)); do
(( r = RANDOM % n ))
tmp=${random_list[i]}
random_list[i]=${random_list[r]}
random_list[r]=$tmp
done
printf '%s\n' "${random_list[@]}" > generated.txt
Dito isto, o FreeBSD sort
tem uma opção -R
para ordenar aleatoriamente, eu ficaria surpreso se o tipo OS / X não o fizesse, então você deve ser capaz de fazer (supondo que elementos da matriz não contenham caracteres de nova linha):
printf '%s\n' "${list[@]}" | sort -R > generated.txt