shell使用系统变量 RANDOM 产生1-6的随机数
时间: 2024-02-25 14:56:28 浏览: 20
可以使用以下命令来实现:
```
echo $((RANDOM%6+1))
```
其中,`RANDOM` 是 shell 内置的系统变量,它会在每次执行时生成一个 0 到 32767 的随机数。使用 `%` 运算符可以将这个随机数限制在 0 到 5 的范围内,再加上 1 就可以得到 1 到 6 的随机数。最后使用 `echo` 命令输出即可。
相关问题
使用linux下的shell编程,运用基础循环语句,创建 /home/random.sh 文件,实现以下功能: 1、使用系统变量 RANDOM 产生1-6的随机数 2、使用 for 循环由1得到的随机数,并输出如下格式:年月日 时分秒#%#随机数#%#随机8位字符串,并将内容附加重定向到 /home/random.log 文件 数据参考如下: 2023-05-24 13:14:00#%#1#%#e0a15f36 3、配置 crontab ,每分钟的第5秒运行 random.sh 程序(此配置内容写在 random.sh 文件的第二行,并注释)
好的,以下是代码实现:
```bash
#!/bin/bash
# * * * * * /bin/bash /home/random.sh >/dev/null 2>&1
for (( i=1; i<=$RANDOM; i++ ))
do
datetime=$(date '+%Y-%m-%d %H:%M:%S')
random_num=$((RANDOM % 6 + 1))
random_string=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
echo "$datetime#%#$random_num#%#$random_string" >> /home/random.log
done
```
这段代码使用了系统变量 `RANDOM` 产生 1-6 的随机数,并使用 `for` 循环执行相应次数。在循环中,使用 `date` 命令获取当前时间,使用 `$RANDOM` 产生 1-6 的随机数,使用 `cat /dev/urandom` 和 `tr` 命令产生 8 位随机字符串,并将结果输出到 `/home/random.log` 文件中。
为了实现每分钟的第 5 秒运行一次,我们可以配置 `crontab`,将以下内容添加到 `crontab` 中:
```
* * * * * /bin/bash /home/random.sh >/dev/null 2>&1
```
需要注意的是,由于 `crontab` 的环境变量比较有限,因此在脚本中使用的命令需要使用绝对路径。同时,为了避免输出信息干扰 `crontab` 的执行,我们可以将结果重定向到 `/dev/null`。
使用linux下的shell编程,创建 /home/random.sh 文件,实现以下功能: 1、使用系统变量 RANDOM 产生1-6的随机数 2、使用 for 循环由1得到的随机数,并输出如下格式:年月日 时分秒#%#随机数#%#随机8位字符串,并将内容附加重定向到 /home/random.log 文件 数据参考如下: 2023-05-24 13:14:00#%#1#%#e0a15f36 3、配置 crontab ,每分钟的第5秒运行 random.sh 程序(此配置内容写在 random.sh 文件的第二行,并注释)
以下是实现功能的代码:
```bash
#!/bin/bash
# 定义变量
DATE=$(date "+%Y-%m-%d %H:%M:%S")
RANDOM_NUM=$(( RANDOM % 6 + 1 ))
RANDOM_STR=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
# 输出到日志文件
for i in $(seq 1 $RANDOM_NUM)
do
echo "${DATE}#%#${RANDOM_NUM}#%#${RANDOM_STR}" >> /home/random.log
done
```
其中,首先使用 `date` 命令获取当前时间,并将其赋值给变量 `DATE`。然后使用 `RANDOM` 变量获取 1-6 的随机数,并将其赋值给变量 `RANDOM_NUM`。接着使用 `cat` 命令读取 `/dev/urandom` 设备文件的内容,`tr` 命令删除其中的非字母和数字字符,`fold` 命令将字符串每8个字符分为一组,`head` 命令只取第一组,最后将结果赋值给变量 `RANDOM_STR`。
接着使用 `for` 循环,循环次数为随机数 `RANDOM_NUM`。每次循环输出一行设置好格式的字符串到 `/home/random.log` 文件中,使用 `>>` 符号将其附加重定向到文件末尾。
最后,在文件的第二行加入以下内容注释解释如下:
```bash
# crontab -e
# * * * * * /bin/bash /home/random.sh >/dev/null 2>&1
# 每分钟的第5秒运行 random.sh 程序
```
将 `random.sh` 文件赋予执行权限,即可配置 crontab,每分钟的第五秒运行该程序。