Shell 脚本 -06-脚本生成一个 100 以内的随机数

Shell 脚本 -06-脚本生成一个 100 以内的随机数

脚本需求:

​ 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。

脚本内容:
#! /bin/bash
# 使用 RANDOM 随机整数函数,RANDOM 为系统自带的系统变量,值为 0-32767
# 使用取余算法将随机数变为 1-100 的随机数

num=$[RANDOM%100+1]

# 使用 Read 提示用户猜数字:

while :
do
	read -p '计算机生成了一个 1-100 的随机数字,你猜猜看:' cai
	if [ "$cai" -eq "$num" ];then
		echo "你个小机灵鬼,真棒,系统生成的就是 $num"
		exit
	elif [ "$cai" -gt "$num" ];then
		echo "猜大了,往小的猜一下!!!"
	else
		echo "猜小了,往大的猜一下!!!"
	fi
done
	
脚本思路:

​ 使用 Linux 系统内置函数(RANDOM 生成随机数字),通过 while 无限循环+if判断语句,来判断是否才正确,并对其进行范围的提示。

​ 猜对了之后,exit 退出并进行提示。

脚本输出:
[root@localhost script]# sh 06.sh 
计算机生成了一个 1-100 的随机数字,你猜猜看:50
猜小了,往大的猜一下!!!
计算机生成了一个 1-100 的随机数字,你猜猜看:70
猜小了,往大的猜一下!!!
计算机生成了一个 1-100 的随机数字,你猜猜看:90
猜大了,往小的猜一下!!!
计算机生成了一个 1-100 的随机数字,你猜猜看:80
猜大了,往小的猜一下!!!
计算机生成了一个 1-100 的随机数字,你猜猜看:77
猜小了,往大的猜一下!!!
计算机生成了一个 1-100 的随机数字,你猜猜看:78
猜小了,往大的猜一下!!!
计算机生成了一个 1-100 的随机数字,你猜猜看:79
你个小机灵鬼,真棒,系统生成的就是 79

<think> 首先,用户的问题是关于在Ubuntu系统的shell脚本中实现sleep一个0到15秒随机数的方法。我需要基于提供的引用内容来回答,但引用中的内容似乎不是直接相关的。引用[1]是关于shift命令处理参数,引用[2]是关于while read逐行处理和磁盘监控。用户说“上述引用仅供参考,并不是用户真正的需求”,所以我应该聚焦在用户的具体需求上。 用户上一次的问题是在这个对话中首次出现,所以没有历史上下文。我需要直接回答用户的问题。 关键点是:在Ubuntu系统的shell脚本中,如何让脚本sleep一个0到15秒之间的随机数。 在shell脚本中,生成随机数可以使用$RANDOM变量,它生成0到32767的随机整数。然后,我需要将这个范围映射到0到15秒。 步骤: 1. 生成随机数:rand_num=$RANDOM 2. $RANDOM的范围是0-32767(在bash中),所以我需要缩放这个范围到0-15。 3. 为了得到0到15秒的睡眠时间,我可以计算:sleep_time=$(($RANDOM % 16)) ,因为% 16会给出0到15的整数。 4. 然后使用sleep命令:sleep $sleep_time 其他注意事项: - 确保脚本有shebang,比如#!/bin/bash。 - 在Ubuntu中,默认的shell是bash,所以$RANDOM应该可用。 - 如果用户需要浮点数秒(比如0.5秒),但用户指定的是整数秒(0-15),所以应该是整数。 用户说“sleep一个0 - 15秒随机数”,意思是睡眠时间为0到15秒的随机整数。 所以,示例脚本: ```bash #!/bin/bash # 生成0到15之间的随机数 delay=$((RANDOM % 16)) echo "Sleeping for $delay seconds..." sleep $delay echo "Awake!" ``` 在引用[2]中,有一个sleep 10的命令,所以sleep命令是标准的。 现在,关于系统级指令: - 所有行内数学表达式用$...$格式:在这个上下文中,我不需要数学表达式。 - 独立公式用$$...$$:同样,不需要。 - LaTeX语法正确:不适用。 - 使用中文回答:是的,整个回答要用中文。 - 生成相关问题:用户指令中说“生成相关问题”,所以我需要在回答后添加相关问题。 - 回答中引用的段落末尾自然地添加引用标识:用户提供了引用[1]和[2],但我可能需要参考它们。用户说“上述引用仅供参考”,所以我应该尽量参考,但如果相关的话。 引用: - 引用[1]是关于shift的,不直接相关。 - 引用[2]有sleep命令,但它是固定10秒。 在回答中,我可以提到$RANDOM变量,类似于如何在脚本中处理数值。 结构回答: 1. 解释方法。 2. 给出完整脚本示例。 3. 解释代码。 4. 添加相关问题。 相关问题应该基于这个主题: - 如何生成其他范围的随机数- 如何让脚本随机间隔运行? - 关于sleep命令的其他用法? 最终输出: - 使用中文。 - 清晰结构。 </think> 以下是在Ubuntu系统中,让Shell脚本睡眠0-15秒随机数的详细解决方案。Ubuntu默认使用Bash作为Shell解释器,可以通过内置的`$RANDOM`变量生成随机数,再结合`sleep`命令实现。我将逐步解释并提供一个完整可运行的示例脚本。 ### 解决方案说明 1. **核心逻辑**: - `$RANDOM`变量生成一个0到32767之间的随机整数(Bash内置功能)。 - 通过取模运算缩放范围:`$((RANDOM % N))`会生成0到N-1随机整数。这里需要0-15秒的范围,因此设置`N=16`。 - 最终计算:`random_delay=$((RANDOM % 16))`,这会得到0-15的随机整数。 - 调用`sleep $random_delay`执行睡眠。 2. **脚本示例**: 创建一个脚本文件(如`random_sleep.sh`),内容如下: ```bash #!/bin/bash # 功能:睡眠0-15秒的随机时间 random_delay=$((RANDOM % 16)) # 生成0-15的随机整数 echo "脚本将睡眠 ${random_delay} 秒..." sleep $random_delay echo "睡眠结束,继续执行后续操作!" ``` 3. **实施步骤**: - 保存脚本:将上述代码复制到文件中,例如: ```bash nano random_sleep.sh # 创建并编辑文件 ``` - 添加执行权限: ```bash chmod +x random_sleep.sh ``` - 运行脚本: ```bash ./random_sleep.sh ``` - **示例输出**(每次运行结果随机): ``` 脚本将睡眠 7 秒... 睡眠结束,继续执行后续操作! ``` ### 关键点解释 - **为什么用`% 16`**:`$RANDOM % 16`确保随机数范围是0-15(包含0和15),因为取模运算`% N`的结果总是0到N-1- **睡眠0秒的含义**:`sleep 0`是有效的,它表示立即跳过(无延迟),常用于测试场景。 - **Ubuntu兼容性**:此方法在Ubuntu的Bash环境中完全兼容,无需额外安装包(引用示例中的`sleep`命令验证了其基础性)[^2]。 - **随机性质量**:`$RANDOM`生成随机数足够满足一般脚本需求;如果需更高安全性(如加密场景),建议使用`/dev/urandom`。 ### 进阶用法 如果需要更精确的控制(如浮点数秒),可以结合其他命令: ```bash #!/bin/bash # 生成0.0-15.0之间的随机浮点数(例如3.141秒) random_float=$(awk -v min=0 -v max=15 'BEGIN{srand(); print min+rand()*(max-min)}') echo "脚本将睡眠 ${random_float} 秒..." sleep $random_float ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值