Tuesday, September 06, 2011

bash: randomize order of arguments

n=$#
c=0
declare -a s
for r in $(seq 1 $n)
do
while [ -z $i ] || [ $((${s[$i]})) -eq 1 ] && [ $c -lt $n ]
do
u=$(od -N2 -tu2 -An /dev/urandom)
i=$(( $u % $n + 1))
done
s[$i]=1
c=$(($c + 1))
echo $i
i=''
done