题目要求
写一个shell脚本,能实现如下需求:
1. 执行脚本后,提示输入名字(英文的,可以是大小写字母、数字不能有其他特殊符号),然后输出一个随机的0-99之间的数字,脚本并不会退出,继续提示让输入名字
2. 如果输入相同的名字,输出的数字还是第一次输入该名字时输出的结果
3. 前面已经输出过的数字,下次不能再出现
4. 当输入q或者Q时,脚本会退出。
参考答案
#!/bin/bash f=/tmp/user_number.txt j_n() { while : do n=$[RANDOM%100] if awk '{print $2}' $f|grep -qw $n then continue else break fi done } while : do read -p "Please input a username: " u if [ -z "$u" ] then echo "请输入用户名." continue fi if [ $u == "q" ] || [ $u == "Q" ] then exit fi u1=`echo $u|sed 's/[a-zA-Z0-9]//g'` if [ -n "$u1" ] then echo "你输入的用户名不符合规范,正确的用户名应该是大小写字母和数字的组合" continue else if [ -f $f ] then u_n=`awk -v uu=$u '$1==uu {print $2}' $f` if [ -n "$u_n" ] then echo "用户$u对应的数字是:$u_n" else j_n echo "用户$u对应的数字是:$n" echo "$u $n" >>$f fi else j_n echo "用户$u对应的数字是:$n" echo $u $n >> $f fi fi done