没事就要多做多练,Shell脚本循环例题做一做
Shell脚本循环例题
一、示例1
计算从1到100所有整数的和。
脚本命令
#!/bin/bash a=1 sum=0 while [ $a -le 100 ] do sum=$[$sum + $a] let a++ done echo $sum

二、示例2
提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和。
脚本命令
#!/bin/bash a=0 sum=0 read -p "请输入数字(0-100):" num if [ $num -gt 0 -a $num -lt 100 ];then while [ $num -le 100 ] && [ $a -le $num ] do sum=$[$sum + $a] let a++ done echo $sum fi


三、示例3
求从1到100所有整数的偶数和、奇数和。
脚本命令
#!/bin/bash
i=0
ji=0
ou=0
for i in {1..100}
do
if [ $[$i % 2] -eq 0 ];then
ou=$[$ou + $i]
else
ji=$[$ji + $i]
fi
let i++
done
echo "奇数和为 $ji"
echo "偶数和为 $ou"


四、示例4
执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码。
脚本命令
#!/bin/bash read -p "请输入你的用户名:" yonghu cat /etc/passwd | grep $yonghu &> /dev/null a=$? while [ $a -eq 0 ] do echo "该用户已存在" exit done while [ $a -ne 0 ] do useradd $yonghu read -p "请输入新用户密码:" passwd echo $passwd | passwd --stdin $yonghu exit done


五、示例5
检测指定范围主机是否通信,并将通信的主机ip输出到文件abc.txt中。
脚本命令
#!/bin/bash
for i in 192.168.30.{10..20}
do
ping -c 3 -i 0.5 -w 2 $i &> /dev/null
if [ $? -eq 0 ];then
echo $i >> ~/abc.txt
else
echo "$i 不在线"
fi
done

六、示例6
用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警。
脚本命令
#!/bin/bash i=0 mm=123456 for i in 1 2 3 do read -p "请输入密码:" mima if [ $mm -eq $mima ];then echo "密码正确" exit fi done echo "错误三次,无法进入"


七、示例7
编写能够自动生成一个8位随机密码的脚本。
脚本命令
#!/bin/bash
Str="abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789"
for i in {1..8}
do
num=$[$RANDOM % ${#Str}]
tmp=${Str:num:1}
passwd+=$tmp
done
echo "随机密码为:" $passwd


八、示例8
写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。
脚本命令
#!/bin/bash
a=0
i=1
sum=0
while [ $a -eq 0 ]
do
echo "欢迎来到第 $i 家商店!"
read -p "是否要进店选购?(yes/no)" en
while [ $en = "yes" ]
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 "选购衣服成功!"
sum=$[$sum + 500]
;;
2)
echo "选购裤子成功!"
sum=$[$sum + 400]
;;
3)
echo "选购鞋子成功!"
sum=$[$sum + 350]
;;
4)
echo "选购帽子成功!"
sum=$[$sum + 150]
;;
5)
echo "选购袜子成功!"
sum=$[$sum + 50]
;;
*)
echo "放弃选购!"
esac
read -p "是否再继续选购(yes/no)" en
done
read -p "是否继续逛下一家店(yse/no)" enne
if [ $enne = "yes" ];then
let i++
else
echo -e "谢谢惠顾!\n您一共逛了 $i 家店。\n合计购物总额为 $sum元。"
exit
fi
done





浙公网安备 33010602011771号