要求:
1、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大机会越大,前面已经抓到的数字,下次不能在出现相同数字。
2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入,抓完输入exit退出。
3、倒序输出
方法1:
#!/bin/bash
>chioce.txt
e="exit"
x=""
while [ $e == "exit" ]; do
read -p "please input youname :" x
grep "$x" chioce.txt
if [ $? -eq 0 ]; then
echo "$x already in namelist,can't input again!"
continue;
fi
if [ $x == $e ]; then
echo "game over!"
e=""
break;
fi
f=1
while [ $f -eq 1 ]; do
y=$[RANDOM%99+1]
grep "$y" chioce.txt
if [ $? -gt 0 ];then
f=0
break;
fi
done
echo $y" "$x >> chioce.txt
y=0
x=""
echo "next input!"
done
sort -nr chioce.txt
方法2:
#!/usr/bin/bash
declare -A arr
while true
do
[ "$Name" = "quit" ] && break
read -p "Please input you name: " Name
while true
do
Num=`echo $(($RANDOM%99+1))`
if [[ $Num =~ ${arr[*]} ]];then
continue
else
arr[$Name]=$Num
echo "$Name" "$Num"
break
fi
done
done
for j in ${!arr[*]}
do
echo $j " " ${arr[$j]} >> zhuajiu.txt
done
sort -nr -k2 zhuajiu.txt|head -4 |column -t
总结:
方法1重点是如果重复的名称不会让再次输入一人一次机会,启动前情况目标文件,以确保只保存本次结果。
方法2(来自互联网的代码)保证一人一次的方法是如果重复输入,那么第二次输入会覆盖第一次,略有不公平。