工作中遇到一组值,需要将其每次取值时随机排序一次
本例中数值1-9,将其转为数组,对数组进行操作。
#!/bin/bash
oldArray=(1 2 3 4 5 6 7 8 9)
function arrayRandomSort()
{
oldArray=$1
newArray=()
# 原数组长度
oriLen=${#oldArray[*]}
for i in $(seq 0 ${oriLen-1})
do
# 每次随机取出一个值后的长度是否为0
len=${#oldArray[*]}
if [ ${len} -eq 0 ];then
echo ${newArray[*]}
exit 0
fi
# 在数组长度范围内取一个下标
randomNum=$((RANDOM%${len}))
# echo ${oldArray[$randomNum]}
# 将取出的值赋予新数组
newArray[$i]=${oldArray[$randomNum]}
# 删除取出的数组中的值
unset oldArray[$randomNum]
# 将数组重新保存,刷新下标
oldArray=(${oldArray[*]})
done
}
# 调用arrayRandomSort方法
newArray=$(arrayRandomSort ${oldArray})
# 数组转为字符串
for var in ${newArray[*]}
do
st=$st" $var"
done
echo $st