猜数字小游戏
1.创建10个用户,以utest开头,如:utest1 2.加密码 3.统计一共产生了多少个用户 4.分别列出用户 5.如果产生的用户数为10个,就进入到猜数字游戏 6.随机生成一个数值 7.提示用户输入数值 8.如果大了,就提示你猜的太大,再一小点 9.如果小了,就提示你猜的太小,再大一点 10.如果三次没猜对提示,询问是否还继续(Y/N) 11.如果Y,增加3次生命值 12.如果N,进入宝塔面板界面,提示是否开始工作,选择123 13.1安装apache 2安装MySQL 3安装php
1 代码
#!/bin/bash
echo '- 开始运行程序...'
#设置创建用户数
num=10
#设置用户名前缀
prefix='utest'
#清理环境因素,判断是否创建过该批用户,是则先删除用户
echo '- 正在清理环境因素...'
for((i=1;i<=$num;i++));do
if [[ $(cat /etc/passwd | grep $prefix$i | wc -l) -ne 0 ]];then
userdel -r $prefix$i
fi
done
#统计创建用户前/etc/passwd文件多少行
beforeTotal=$(cat /etc/passwd | wc -l)
sucAddCount=0 #累加创建成功用户数
sucAddUserName=() #数组记录创建成功的用户名
echo -e "- 需要创建用户数为:$num,开始创建user用户...\n"
for((i=1;i<=$num;i++));do
u=$prefix$i #用户名变量
echo '正在创建'$u'...'
#判断创建正常
if [[ $(useradd $u) -eq 0 ]];then
sucAddUserName[$i]=$u #记录用户名
sucAddCount=$((${sucAddCount} + 1)) #累计成功用户数
fi
echo $u| passwd --stdin $u #设置密码和用户名相同
echo '' #输出空行
done
echo '一共创建了'$sucAddCount'个用户,分别为:'${sucAddUserName[@]}
#统计创建用户后/etc/passwd文件多少行
afterTotal=$(cat /etc/passwd | wc -l)
echo '创建前/etc/passwd文件【'$beforeTotal'】行'
echo '创建后/etc/passwd文件【'$afterTotal'】行'
diffTotal=$[afterTotal-beforeTotal]
echo '相差【'$diffTotal'】行'
#-----------------------------------猜数字游戏------------------------------------
#判断是否能进入猜数字游戏:创建10个用户就可以进入,否则退出
if [[ $diffTotal -ne 10 ]]; then
echo '创建的用户并非10个,猜数字游戏进入失败'
exit
fi
echo -e '\n恭喜进入猜数字游戏-----------\n你现在有三次生命!\n'
#利用内部系统变量,$RANDOM范围是 [0, 32767]
function rand1To10(){
expr $RANDOM % 10 #得到1-10的随机数
}
constNum=$(rand1To10)
echo -e '我已经确定好一个1-10数字啦,请你来猜猜'
failCount=0 #统计错误数
for((i=0;i<3;i++)); do
echo -n '你猜的数字是:'
read num
#判断输入是否数字
expr $num "+" 10 &> /dev/null
if [ $? -ne 0 ]; then
echo '非法输入,强制退出游戏'
exit
fi
if [[ "$num" -gt "$constNum" ]]; then
echo '你猜的太大,再一小点,遗憾失去一条生命'
elif [[ "$num" -lt "$constNum" ]]; then
echo '你猜的太小,再大一点,遗憾失去一条生命'
else
echo '猜对啦,你已通过游戏'
exit
fi
failCount=$((${failCount} + 1)) #累加错误数
#判断是否错误三次
if [[ $failCount -eq 3 ]]; then
echo '你已猜错三次,失去三次生命,是否再挑战一次: Y/N'
read flag
if [[ "$flag" = "Y" ]]; then
i=-1
failCount=0
elif [[ "$flag" = "N" ]]; then
echo '游戏失败,进入宝塔面板界面'
else
echo '非法输入,强制退出游戏'
exit
fi
fi
done
#-----------------------------------进入宝塔面板界面------------------------------------
echo -e '请选择你需要安装的软件:\n1 安装apache\n2 安装MySQL\n3 安装php'
echo -n '请输入序号:'
read num
case $num in
1) echo '安装apache'
;;
2) echo '安装MySQL'
;;
3) echo '安装php'
;;
*) echo '你选择的序号不存在'
;;
esac
2 效果
2.1 进入游戏
2.2 开始猜数字
- 猜成功
- 猜失败
- 重新猜
- 非法字符
- 不继续猜