1、写一个脚本,实现随机选人功能,脚本需传递一个参数进去,如    pick.sh 1 出现结果"家驹”  pick.sh 3 出现结果 "落叶" "jason" "贾诩"等随机结果。 (pick.sh N 其中N可以为不大于总人数的任意数)

#!/bin/bash
#Author:星空刺
#Date:--
#文件名必须是一行一个名字
#设定必须有一个参数
cat << EOF
Warning:
.Name_file must be a name of a line!if not,please enter ctrl+c!
.\$ must be exist and \$ is an int greater than zero!
.\$ must be between and the maximum number of names!
***************************************************************
EOF
[ $# -le ] && echo 'Error:$1 must be exist and $1 is an int greater than zero!' && exit
#名字列表文件路径
read -p 'Please input your name_file_path:' name_path
echo "***************************************************************"
#获取一个数组赋值模式列表
[ -z $name_path ] && echo 'Name_file does not exist' && exit
while read line;do
name=(${name[*]} $line)
done < $name_path
#获取数组元素总个数
new_name_c=${#name[@]}
#判定脚本的参数是否在0~数组元素个数之间
echo "The current file contains the names of $new_name_c!"
[ $ -gt $new_name_c ] || [ $ -lt ] && echo 'But $1 must be between 0 and the maximum number of names!' && exit
echo "***************************************************************"
#利用for循环,循环脚本$1次
for (( i=$;i>=;i-- ));do
#通过$RANDOM获取随机数,并通过取余数获取到数组下标0~n内的一个元素
ran=`echo "$RANDOM % $new_name_c" | bc`
#每输出一个,则删除当前对应数组元素,并便于下次判定是否为空,若为空,则说明与上次获取一致
if [ -n "${name[$ran]}" ];then
echo -n "${name[$ran]} "
unset name[$ran]
else
#若为空,则i加1,即本次循环获取失败,不至于少获取一个
let i++
fi
done

shell脚本练习(随机取名)的更多相关文章

  1. Shell 脚本实现随机抽取班级学生

    #/bin/bash function rand(){ min=$ max=$(($-$min+)) num=$(date +%s%N) echo $(($num%$max+$min)) } rnd= ...

  2. Script:shell脚本生成随机字符串

    #!/bin/bash # bash generate random alphanumeric string # # bash generate random character alphanumer ...

  3. tomcat监控,自动重启shell脚本

    tomcat监控,自动重启shell脚本如下,取名 monitor_tomcat.sh: #!/bin/sh # func:自动监控tomcat脚本并且执行重启操作 # 获取tomcat进程ID(其中 ...

  4. shell脚本编程(一) 变量、条件判断、循环

    目录   1. shell脚本编程   2. 运行 Shell 脚本有两种方法   3. 变量   4. 本地变量   5. 环境变量   6. 参数变量   7. 多行注释   8. if条件判断 ...

  5. CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

  6. shell脚本俄罗斯方块游戏

    亲自测试了一个大牛写的shell脚本,感兴趣可以看看,效果如下:

  7. shell脚本编程之for语句、if语句使用介绍

    介绍了shell脚本编程之for语句.if语句的使用方法. 上部: 面向过程: 顺序执行 选择执行: if, case 循环执行: for, while, until 一.for语句 格式:      ...

  8. shell脚本进阶之循环判断

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  9. 《Linux命令行与shell脚本编程大全》第二十二章 gawk进阶

    gawk是一门功能丰富的编程语言,你可以通过它所提供的各种特性来编写好几程序处理数据. 22.1 使用变量 gawk编程语言支持两种不同类型的变量: 内建变量和自定义变量 22.1.1 内建变量 ga ...

随机推荐

  1. python文件_批量改名

    #! /usr/bin/env python #coding=gbk #文件操作实例--将文件夹下所有图片名称加上'_test' import re,os,time #str.split(path) ...

  2. 唯品会安卓版app分析

    .................................................................................................... ...

  3. win8、win8.1官方版本、及安装密钥

    云盘地址:Windows 8 简体中文专业版+核心版 MSDN 正式版(32位)http://pan.baidu.com/s/1eQgiAiQSHA1:0C4A168E37E38EFB59E88443 ...

  4. Keil C51中函数指针的使用

    函数指针在C语言中应用较为灵活.在单片机系统中,嵌入式操作系统.文件系统和网络协议栈等一些较为复杂的应用都大量地使用了函数指针.Keil公司推出的C51编译器是事实上80C51 C编程的工业标准,它针 ...

  5. OpenSSl 加密解密 示例(终于有编程实践了)

    OPenSSl的加密主要有三个重要的函数.看懂下面的代码就基本上知道该如何使用openssL来加密了. 不过注意,要先将libssl.so.1.0和libcrypto.so.1.0文件复制到执行的文件 ...

  6. oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法

    近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据. ...

  7. java package 重命名时注意事项

    如果要对包重命名时,需要关注以下方面: 1. java关联类里的重命名(这个一般通过开发工具会自动修正,如eclipse) 2.配置文件,如原先配置为com.abc,现在更名为com.abc123,这 ...

  8. 【HDU1162】Eddy's picture(MST基础题)

    很基础的点坐标MST,一不留神就AC了, - - !! #include <iostream> #include <cstring> #include <cstdlib& ...

  9. Message Authentication Code

  10. VMdomainXml

    1,One,Euc,Ostack 虚拟磁盘镜像制作方法[Windows,Linux,类linux OS](1,基于ios部署系统生成img,2基于vm xml定义部署系统生成img qcow2) 如需 ...