Обычный способ перемешать список - это перебрать элементы и поменять местами на другой элемент в случайном порядке.
#! /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
Сказав это, FreeBSD sort
имеет параметр -R
для случайной сортировки, я был бы удивлен, если бы сортировка в OS / X этого не сделала, поэтому вы должны иметь возможность do (при условии, что элементы массива не содержат символов новой строки):
printf '%s\n' "${list[@]}" | sort -R > generated.txt