美文网首页
shell-实战3

shell-实战3

作者: JSFnull | 来源:发表于2020-04-30 11:33 被阅读0次

企业Shell面试题3:某项目学生实践抓阄案例
好消息,老男孩培训学生外出企业项目实践机会(第6次)来了(本月中旬),但是,名额有限,队员限3人(班长带队)。
因此需要挑选学生,因此需要一个抓阄的程序:
要求:
1、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。

2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入。

#!/bin/bash
input(){
while true
do
read -p "pls input your name:" name
if [ -z $name ]
then
continue
elif [ $name == "0" ]
then
break
fi
rand=$((RANDOM%5))
[ -f /tmp/temp.txt ] && num=`cat temp.txt |  awk '{print $1}'`
  while true
  do
  if [[ $num =~ $rand ]];then
  rand=$((RANDOM%5))
    if [ $num2 -ge 4 ];then
    output
    exit 0
    fi
  continue
  else
  echo -e $rand"\t"$name >>/tmp/temp.txt
  break
  fi
  done
num2=`cat temp.txt | awk '{print $1}' | wc -l`
done
}
output(){
cat /tmp/temp.txt | sort -nr | head -3 > result.txt
cat result.txt
}
main(){
input
}
main

说明下 脚本能用到的知识点:
RANDOM%5 随机数(1-32767)对5求余数 0 1 2 3 4
while true 无限循环
read -p “” 变量名 -----脚本交互
sort -nr 对数字进行降序 , 默认是升序
`` 反撇 是获取执行命令后的结果 或者用$(( 加命令))


补充:
双中括号[[]]是bash shell中的关键词,相对于[]有以下特点和优势:

[[ ]] 结构比[ ]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。
支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。
使用[[ ... ]]条件判断结构,而不是[... ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。
bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。
实际上,原理就是,在双中括号中,可以使用=~进行shell的正则匹配,找出右边的字符串是否在左边的字符串中。

但是需要注意的是,双中括号在bash中可以使用,在sh中会报找不到的错,这也是我使用的时候遇到的一个坑。
=~ : 包含的意思

相关文章

  • shell-实战3

    企业Shell面试题3:某项目学生实践抓阄案例好消息,老男孩培训学生外出企业项目实践机会(第6次)来了(本月中旬)...

  • shell-实战

    企业Shell面试题1:批量检查多个网站地址是否正常企业面试题:批量检查多个网站地址是否正常要求:1、使用shel...

  • shell-实战5

    企业Shell面试题5:菜单自动化软件部署经典案例综合实例:打印选择菜单,按照选择一键安装不同的Web服务。示例菜...

  • shell-实战2

    企业Shell面试题2:破解RANDOM随机数案例已知下面的字符串是通过RANDOM随机数变量md5sum后,再截...

  • shell-实战4

    企业Shell面试题4:开发脚本***检测与报警案例面试及实战考试题:监控web站点目录(/var/html/ww...

  • Jenkins脚本上传文件到SVN

    直接上例子1.构建->增加构建步骤->执行shell-复制粘贴->根据自身的需求做相关更改即可

  • MySQL实战 目录

    MySQL实战 MySQL实战1 数据库概念介绍MySQL实战2 语法、筛选条件和函数MySQL实战3 分组查询和...

  • shell-实战-收集日志入库(mysql)-发送邮件(mail

    backupdb.sh 'vim /etc/mail.rc' crontab设置,每天6点定时执行

  • shell-命令

    echo echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式:echo arg您可以使用...

  • shell-变量

    变量类型 运行shell时,会同时存在三种变量: 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效...

网友评论

      本文标题:shell-实战3

      本文链接:https://www.haomeiwen.com/subject/cdhzwhtx.html