美文网首页Linux 相关文章Linux学习之路Shell
Linux 之 shell script -- 搭配随机数

Linux 之 shell script -- 搭配随机数

作者: 熊猫人和熊猫猫 | 来源:发表于2019-08-28 22:43 被阅读0次

    最近几天一直在学习shell script,它真的是一项特别实用的工具。前面已经把判断式、循环都学完啦。所以到今天,这个shell专题也就没多少新的知识点了。多学习多实践,才能把它玩溜~

    1. 搭配随机数与数组的实验

    1.1 实践1

    这里学一个有趣的例子,每天中午是不是都为吃什么发愁?
    这里写一个shell,通过随机数的处理来帮我们选择~

    • 撰写条件:
      首先,将全部的店家输入到一组数组当中
      然后,透过随机数的处理,去取得可能的数值
      最后,将搭配到该数值的店家秀出来

    vi what_to_eat.sh 输入如下代码:

    #!/bin/bash
    eat[1]="菠萝饭"
    eat[2]="沙县馄炖"
    eat[3]="湖南米粉"
    eat[4]="康师傅方便面"
    eat[5]="桂林米粉"
    eat[6]="柳州螺蛳粉"
    eat[7]="花甲粉"
    eat[8]="煲仔饭"
    eat[8]="喜茶"
    eat[9]="肯德基"
    eatnum=9 #需要输入有几个可用的餐厅数
    
    check=$((${RANDOM}*${eatnum}/32767 + 1 ))#这里的${RANDOM}负责产生随机数
    echo "You may eat ${eat[${check}]}"
    

    按照需求,如果我每次想秀出3个不重复的店家呢?

    1.2 实践升级

    vi what_to_eat-2.sh 输入如下代码:
    eated 取值0,1,2,通过随机数获得3次check

    #!/bin/bash
    eat[1]="菠萝饭"
    eat[2]="沙县馄炖"
    eat[3]="湖南米粉"
    eat[4]="康师傅方便面"
    eat[5]="桂林米粉"
    eat[6]="柳州螺蛳粉"
    eat[7]="花甲粉"
    eat[8]="煲仔饭"
    eat[8]="喜茶"
    eat[9]="肯德基"
    eatnum=9 #定义变量${eatnum}为9,即输入有几个可用的餐厅数
    
    eated=0 #定义变量${eated}为0
    while [ "${eated}" -lt 3 ]; do #${eated}小于3时即循环
        check=$(( ${RANDOM}*${eatnum}/32767 + 1 ))
        mycheck=0
        if [ "${eated}" -ge 1 ]; then #判断${eated}是否大于等于1
            for i in $(seq 1 ${eated}) #对于1-${eated}的连续的几个数
            do
                if [ ${eatedcon[$i]} == $check ]; then
                    mycheck=1
                fi
            done
        fi
        if [ ${mycheck} == 0 ]; then
            echo "you may eat ${eat[${check}]}"
            eated=$(( ${eated} + 1 ))
            eatedcon[${eated}]=${check}
        fi
    done
    

    2. shell script的追踪与debug

    scripts在执行之前,最怕出现语法错误问题,bash直接有相关参数来判断是否有问题
    工作模式:sh [-nvx] scripts.sh
    -n : 不要执行script,仅查询语法的问题
    -v:再执行script前,先将scripts的内容输出到屏幕上
    -x:将使用到的script内容显示到屏幕上(很有用哦,它会将script的执行过程全部列出来)
    这里截鸟哥的图理解:

    sh -x script.sh

    在输出的讯息中,在加号后面的数据其实都是指令串,由于sh -x的方式来将指令执行过程也显示出来,如此用户可以判断程序代码执行到哪一时段会出现相关的信息。这个功能可以透过显示完整的指令串,你可以依据输出的错误信息来订正你的脚本。

    Postscript:

    鸟哥箴言:在shell scripts的学习方法上面,需要“多看、多模仿、并加以修改成自己的样式”是最快的学习手段

    相关文章

      网友评论

        本文标题:Linux 之 shell script -- 搭配随机数

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