文档章节

根据名字得数字

w
 wzb88
发布于 2019/09/05 22:38
字数 408
阅读 57
收藏 0

3 月,跳不动了?>>>

题目要求

写一个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

© 著作权归作者所有

下一篇: 猜数字
w
粉丝 3
博文 198
码字总数 125533
作品 0
杭州
私信 提问
加载中

评论(0)

FROM_UNIXTIME 格式化MYSQL时间戳函数

FROM_UNIXTIME 格式化MYSQL时间戳函数 函数:FROMUNIXTIME 作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。 语法:FROMUNIXTIME(unix_timestamp,format) 返回表示 Unix 时间标......

不忘初心77
2017/04/10
0
0
mysql UNIX_TIMESTAMP转换

使用 FROM_UNIXTIME函数,具体如下: FROMUNIXTIME(unixtimestamp,format) 返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样...

有事没事
2016/02/29
174
0
MySQL按天,按周,按月,按时间段统计【转载】

https://blog.csdn.net/qq_28056641/article/details/78306870 select DATEFORMAT(createtime,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATEFORMAT(createti......

李道福
2018/07/17
26
0
MySql按周,按月,按日分组统计数据

知识关键词:DATE_FORMAT select DATEFORMAT(createtime,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATEFORMAT(createtime,'%Y%m%d') days,count(caseid) cou......

bengozhong
2016/11/07
272
0
MySql按周,按月,按日分组统计数据

SELECT DATEFORMAT( FROMUNIXTIME( ) , '%Y%m' ) months, COUNT( 1 ) count FROM bwuser GROUP BY months SELECT DATEFORMAT( FROMUNIXTIME() , '%Y%m' ) months, COUNT( 1 ) count FROM WHE......

沉淀岁月
2016/09/09
39
0

没有更多内容

加载失败,请刷新页面

加载更多

pygame---2048

用4*4的二维数组保存地图,pygame.key.get_pressed()获取键盘操作 import randomimport sysimport pygamefrom pygame.locals import *PIXEL=150SCORE_PIXEL=100SIZE=4#地图...

ivyhaha
22分钟前
9
0
机器学习算法(五)—— 最优化方法:梯度下降

一、什么是梯度下降 梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。 在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用...

筠初
27分钟前
18
0
Java并发编程(03):多线程并发访问,同步控制

本文源码:GitHub·点这里 || GitEE·点这里 一、并发问题 多线程学习的时候,要面对的第一个复杂问题就是,并发模式下变量的访问,如果不理清楚内在流程和原因,经常会出现这样一个问题:线...

知了一笑
33分钟前
19
0
MyBatis-Spring:整合Mybatis与Spring方式二:SqlSessionDaoSupport

本文上接《MyBatis-Spring:整合Mybatis与Spring方式一:SqlSessionTemplate》, SqlSessionDaoSupport是一个抽象的支持类,用来为你提供SqlSession。调用getSqlSession()方法你会得到一个Sql...

明德君
41分钟前
141
0
count(1)、count(*)与count(列名)的执行区别

执行效果: 1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效果是一样的。 但是在表做过分...

七宝1
49分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部