要求: , 仅允许用一次循环切循环用于每次取数, 判断是否重复不可以用循环判断.
#!/bin/bash
function gree() {
echo -e "\033[32m$*\033[0m"
}
function red() {
echo -e "\033[31m$*\033[0m"
}
function please_input_name () {
echo -en "\033[32m请输入您的名称: \033[0m" && read num
return $num
}
function build_some_num () {
declare -A list_num
declare -A num_total
for i in {0..99}
do
num_total[$i]=$i
done
echo 1
while true
do
#please_input_name
#取出的数序号,第多少个数,范围是1~数组长度+1
list_num=`echo "$RANDOM%${#num_total[*]}+1" | bc`
echo 取出的第多少个数: $list_num
#echo "${num_total[@]}"
sleep 1
#打印取出的数下标
xiabiao=`echo ${!num_total[@]} | awk -v list_num=$list_num '{print $list_num}'`
#打印取到的数组下标,数组值
echo $xiabiao
echo ${num_total[$xiabiao]}
#移除这个已经取到的数
unset num_total[`echo "$list_num-1" | bc`]
done
}
function main () {
echo "$1" # arguments are accessible through $1, $2,...
build_some_num
}
main