购物
逛淘宝选购商品,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元)
每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。
num=0
for ((i=1;i<=5;i++))
do
echo 是否进入第"$i"家店?
read -p "输入(y & n)" shu
while [ $shu = "y" ]
do
echo 1.衣服 ¥"$yi"
echo 2.裤子 ¥"$ku"
echo 3.鞋子 ¥"$xie"
echo 4.帽子 ¥"$mao"
echo 5.袜子 ¥"$wa"
echo "您想购买啥 美女/帅哥?"
read bh
echo "美女/帅哥还要买吗?(y & n)"
read shu
case $bh in
1)
let num+=$yi
echo 总价为"$num" &> /dev/null
;;
2)
let num+=$ku
echo 总价为"$num"&> /dev/null
;;
3)
let num+=$xie
echo 总价为"$num"&> /dev/null
;;
4)
let num+=$mao
echo 总价为"$num"&> /dev/null
;;
5)
let num+=$wa
echo 总价为"$num"&> /dev/null
;;
*)
echo "您的选择有误,请检查输入"
esac
done
done
echo 您本次购买的总价为:$num
运行结果
第二种方法
#!/bin/bash
#定义逛店次数变量 i
i=1
#定义购物总额变量 sum
sum=0
while true
do
echo "来到第$i家商店门口"
read -p "是否进入看看(yes/no)" doing
until [ $doing = "no" ]
do
echo "1:衣服¥500"
echo "2:裤子¥400"
echo "3:鞋子¥350"
echo "4:帽子¥150"
echo "5:袜子¥50"
echo "6:放弃购买"
read -p "请选择需要购买的商品序列:" num
case $num in
1)
echo "衣服购买成功"
let sum+=500
;;
2)
echo "裤子购买成功"
sum=$[sum+=400]
;;
3)
echo "鞋子购买成功"
sum=$[sum+=350]
;;
4)
echo "帽子购买成功"
sum=$[sum+=150]
;;
5)
echo "袜子购买成功"
sum=$[sum+=50]
;;
6)
echo "放弃购买"
;;
*)
echo "输入错误"
esac
read -p "是否继续在这家店购物(yes/no)" doing
done
read -p "是否继续逛街(yes/no)" going
if [ $going = "yes" ]
then
let i++
else
break
fi
done
echo -e "一共经过$i家店。\n合计购物总价:$sum。"
猴子吃香蕉
猴子摘下了n个香蕉,当天吃掉一半多一个,第天也是吃掉剩下香蕉一半多一个,到了第十天,香蕉只剩下了1个
问: 猴子第一天摘了多少香蕉?
#!/bin/bash
n=1
for ((i=9;i>0; i--))
do
n=$[(n+1)* 2]
done
echo $n
斐波拉切数
1 1 2 3 5 8 13 21 34 55 89求前10个数的总和
a=1
b=1
C=O
for i in f1..10)
do
echo $a
C=$[C + a]
sum=$[a + b]
a=$b
十进制转二进制
[root@localhost2 ~]#vim numchange.sh
#依次减数法
#!/bin/bash
read -p "请输入一个0~255的整数:" num
for i in 128 64 32 16 8 4 2 1
do
NUM=$[num - i]
if [ $NUM -lt 0 ];then
echo -n 0
else
echo -n 1
num=$[num - i]
fi
done
echo ""
#取余倒排法
#!/bin/bash
sum=''
read -p "请输入一个0~255的整数:" num
for i in {1..8}
do
NUM=$[num % 2]
sum=$NUM$sum
let num/=2
done
echo $sum
[root@localhost2 ~]#bash numchange.sh
请输入一个0~255的整数:231
11100111
[root@localhost2 ~]#bash numchange.sh
请输入一个0~255的整数:54
00110110
[root@localhost2 ~]#bash numchange.sh
请输入一个0~255的整数:83
01010011
生成随机数八位密码
[root@localhost1 data]#vim randompasswd.sh
#!/bin/bash
#指定随机字符的范围
STR="ABCDRFGHIJKLMNOPQRSTUVWXTZabcdrfghijklmnopqrstuvwxtz0123456789"
sum=''
for ((i=1; i<=8; i++)) #指定循环6次(实现输出6位字符)
do
length=${#STR} #获取字符范围的长度
num=$[RANDOM % length] #在指定长度中生成随机数(作为取字符的索引)
value=${STR:num:1} #截取指定索引字符
sum+=$value #字符追加到sum变量中
done
echo $sum #输出$sum(即8位随机密码)
[root@localhost1 data]#bash randompasswd.sh
3qCkpA
[root@localhost1 data]#bash randompasswd.sh
CtdDOG
[root@localhost1 data]#bash randompasswd.sh
nTuF0G
检查文件中用户名是否存在并提示创建用户和设置密码
#创建 users.txt 用户列表文件
[root@localhost1 ~]#cd /data
[root@localhost1 data]#vim users.txt
#需要创建的用户列表
zhangsan
lisi
wangwu
zhaoliu
qianqi
zhuba
#编写 checkuser.sh 脚本
[root@localhost1 data]#vim checkuser.sh
#!/bin/bash
#用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码;若该用户不存在,则建立用户并提示用户设置密码
for user in `cat /data/users.txt` #指定循环范围(用户列表文件users.txt)
do
grep "^$user" /etc/passwd &> /dev/null #判断用户是否存在
if [ $? -eq 0 ];then #用户存在
echo "用户${user}已存在!"
#检查存在的用户密码是否为空
checkpd=`cat /etc/shadow | grep "^${user}" | awk -F: '{print $2}'`
if [ $checkpd = "!!" ] || [ -z ${checkpd} ];then #存在用户密码为空
while true #一直循环提示用户输入密码
do
read -p "用户${user}尚未输入密码,请创建密码:" passwd1
read -p "再次输入确认密码:" passwd2
if [ ${passwd1} = ${passwd2} ];then #只有当两次密码相同时,设置密码并退出循环
echo ${passwd1} | passwd --stdin $user
break
fi
done
fi
else #用户不存在
useradd ${user} #创建用户
echo "用户${user}不存在,已为您创建${user}!"
while true #一直循环提示用户输入密码
do
read -p "用户${user}尚未输入密码,请创建密码:" passwd3
read -p "再次输入确认密码:" passwd4
if [ ${passwd3} = ${passwd4} ];then #只有当两次密码相同时,设置密码并退出循环
echo ${passwd3} | passwd --stdin $user
break
fi
done
fi
done
#测试 checkuser.sh
[root@localhost1 data]#bash checkuser.sh
#zhangsan存在且有密码
用户zhangsan已存在!
#lisi存在但无密码,需要设置
用户lisi已存在!
用户lisi尚未输入密码,请创建密码:123123
再次输入确认密码:123123
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
#wangwu存在但无密码,需要设置
用户wangwu已存在!
用户wangwu尚未输入密码,请创建密码:123123
再次输入确认密码:123123
更改用户 wangwu 的密码 。
passwd:所有的身份验证令牌已经成功更新。
#zhaoliu存在且有密码
用户zhaoliu已存在!
#qianqi不存在且无密码,需要设置
用户qianqi不存在,已为您创建qianqi!
用户qianqi尚未输入密码,请创建密码:123123
再次输入确认密码:123123
更改用户 qianqi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
#zhuba不存在且无密码,需要设置
用户zhuba不存在,已为您创建zhuba!
用户zhuba尚未输入密码,请创建密码:123123
再次输入确认密码:123123
更改用户 zhuba 的密码 。
passwd:所有的身份验证令牌已经成功更新。
根据百米赛跑成绩判断结果
[root@localhost1 ~]#vim judgerace.sh
#!/bin/bash
#提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;
#进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
read -p "请输入您的100米赛跑成绩(s):" time
if [ $time -gt 0 -a $time -le 10 ] ;then
echo "恭喜您,进入选拔赛!"
read -p "请输入您的性别(男/女):" sex
case $sex in
男)
echo "请您进入男生组!"
;;
女)
echo "请你进入女生组!"
;;
*)
echo "输入有误,请重新输入!"
;;
esac
elif [ $time -gt 10 ];then
echo "很遗憾,您没有进入选拔赛!"
else
echo "输入有误,请重新输入!"
fi
[root@localhost1 ~]#bash judgerace.sh
请输入您的100米赛跑成绩(s):8
恭喜您,进入选拔赛!
请输入您的性别(男/女):男
请您进入男生组!
随机数实现猜数字游戏
[root@localhost1 data]#bash guessprice.sh
#!/bin/bash
#获取0~999的随机数
num=$[RANDOM % 1000]
i=1 #定义i为循环条件
a=0 #定义a为猜测次数变量
while [ $i -eq 1 ]
do
read -p "请输入你猜测的价格(0~999):" price
if [ $price -eq $num ];then
echo "恭喜你猜对了!"
let a++
let i+=1
elif [ $price -gt $num ];then
echo "你猜高了,请继续!"
let a++
elif [ $price -lt $num ];then
echo "你猜低了,请继续!"
let a++
fi
done
echo "你一共猜了${a}次。"
[root@localhost1 data]#bash guessprice.sh
请输入你猜测的价格(0~999):600
你猜高了,请继续!
请输入你猜测的价格(0~999):400
你猜高了,请继续!
请输入你猜测的价格(0~999):200
你猜高了,请继续!
请输入你猜测的价格(0~999):100
你猜低了,请继续!
请输入你猜测的价格(0~999):150
你猜高了,请继续!
请输入你猜测的价格(0~999):120
你猜低了,请继续!
请输入你猜测的价格(0~999):134
你猜低了,请继续!
请输入你猜测的价格(0~999):140
你猜高了,请继续!
请输入你猜测的价格(0~999):135
你猜低了,请继续!
请输入你猜测的价格(0~999):137
你猜高了,请继续!
请输入你猜测的价格(0~999):136
恭喜你猜对了!
你一共猜了11次。
利用for循环打印99乘法表
[root@localhost2 ~]#vim chengfabiao.sh
#!/bin/bash
for ((i=1;i<=9;i++))
do
for ((j=1;j<=i;j++))
do
m=$[ $i * $j ] #乘积值赋给m
echo -ne "$i*$j=${m} " #指定输出样式
done
echo -e '\n' #每行输出完后换行
done
[root@localhost2 ~]#bash chengfabiao.sh
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81