• shell脚本练习(随机取名)


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

    #!/bin/bash
    #Author:星空刺
    #Date:2013-10-18
    #文件名必须是一行一个名字
    #设定必须有一个参数
    cat << EOF
    Warning:
    1.Name_file must be a name of a line!if not,please enter ctrl+c!
    2.$1 must be exist and $1 is an int greater than zero!
    3.$1 must be between 0 and the maximum number of names!
    ***************************************************************
    EOF
    [ $# -le 0 ] && 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!"
    [ $1 -gt $new_name_c ] || [ $1 -lt 0 ] && echo 'But $1 must be between 0 and the maximum number of names!' && exit
    echo "***************************************************************"
    #利用for循环,循环脚本$1次  
    for (( i=$1;i>=1;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
    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    转--后台开发人员的技术栈
    hadoop +streaming 排序总结
    python 的tempfile学习
    hadoop学习日志
    shell sort 排序大讨论
    系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
    推荐系统评测指标--准确率(Precision)和召回率(Recall)、F值(F-Measure)
    shell 数组
    leecode第七百四十六题(使用最小花费爬楼梯)
    leecode第四百七十五题(供暖器)
  • 原文地址:https://www.cnblogs.com/aaa103439/p/3376497.html
Copyright © 2020-2023  润新知