【shell一天一练】生成n组m位随机数

130 阅读1分钟

今日小练题目📢

写一个脚本产生随机3位的数字,并且可以根据用户的输入参数来判断输出几组。

比如,脚本名字为 abc.sh。

执行方法:

bash number3.sh 直接产生一组3位数字。

bash number3.sh 10 产生10组3位数字。

优秀作业🤌🏻

#!/bin/bash
#author:xYLiuuuuuu
#date:2024-12-12

get_a_num()
{
        n=$[$RANDOM%10]
        echo $n
}

get_numbers() {
        for i in 0 1 2; do
                a[i]=`get_a_num`
        done
        echo ${a[@]} |sed 's/ //g'
}


if [ $# -gt 1 ]
then
        echo "The number of your parameters can only be 1."
        echo "example: bash $0 5"
        exit
fi

if [ $# -eq 1 ]; then
        m=`echo $1|sed 's/[0-9]//g'`
        if [ -n "$m" ];then
                echo "Useage bash $0 n, n is a number,example: bash $0 5"
                exit
        else
                echo "The numbers are:"
                for i in `seq $1`
                do
                        get_numbers
                done
        fi
else
        get_numbers
fi

敲黑板📝

  • RANDOM命令产生随机数,取值范围是0-32767(2^15-1)
  • 数组可以元素为单位赋值:a[0]=1;a[1]=2,获取数组的值:echo ${a[@]}但是元素之间有空格,后面可以加sed 's/ //g'去掉空格
  • 判断一个字符是否为纯数字,可以: echo $1|sed 's/[0-9]//g' ,看它是否为空
  • [ -n "$m" ]判断一个变量的值是否不为空;
  • [ -z "$m" ]判断一个变量的值是否为空