Shell 对一组值进行随机排序

    工作中遇到一组值,需要将其每次取值时随机排序一次

    本例中数值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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值