一、例题1
1.1 需求
计算从1到100所有整数的和
1.2 脚本命令
sum=0
for ((i=1;i<=100;i++))
do
sum=$[$sum + $i]
done
echo $sum
1.3 验证操作
二、例题22.1 需求
提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
2.2 脚本命令
read -p "请输入一个整数(1-100):" num
if [ $num -ge 1 -a $num -lt 100 ];then
sum=0
for ((i=1;i<=$num;i++))
do
sum=$[$sum + $i]
done
echo "整数和为$sum"
else
echo "输入错误,请重新输入数字(1-100)"
fi
2.3 验证操作
三、例题33.1 需求
求从1到100所有整数的偶数和、奇数和
3.2 脚本命令
a=0
for ((i=1;i<=100;i+=2))
do
a=$[$a + $i]
done
echo "1-100内所有奇数和为$a"
b=0
for ((i=0;i<=100;i+=2))
do
b=$[$b + $i]
done
echo "1-100内所有偶数和为$b"
3.3 验证操作
四、例题44.1 需求
执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
4.2 脚本命令
第一种方法:
for i in `cat /etc/shadow | awk -F ':' '{print $1}'`
do
read -p "输入用户名:" name
if [ $name = $i ];then
echo "${name}用户已存在"
exit
else
useradd $name
a=`echo $?`
if [ $a -eq 0 ];then
echo "该用户不存在,将会创建该用户并且将会输入密码"
read -p "输入密码:" mima
echo $mima | passwd --stdin $name
exit
else
exit
fi
fi
done
第二种方法:
read -p "输入用户名:" name
`useradd $name` &> /dev/null
a=`echo $?`
while [ $a -ne 0 ]
do
echo "用户已存在"
exit
done
while [ $a -eq 0 ]
do
echo "该用户不存在,将会被创建"
read -p "输入密码:" mima
echo $mima | passwd --stdin $name
exit
done
4.3 验证操作
五、例题55.1 需求
检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
5.2 脚本命令
for ((a=1;a<=10;a++))
do
ping -c 2 -i 0.5 -w 2 192.168.80.$a &> /dev/null
if [ $? -eq 0 ];then
echo "192.168.80.${a} is online" >> host_ip
else
echo "192.168.80.${a} is offline" >> /dev/null
fi
done
注:这边我们用的for循环,采用遍历的方式,串行用时太长,我们可以运用多线程并行的方式来ping主机IP来缩短时间,具体命令如下:
5.3 操作验证
六、例题66.1 需求
用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
6.2 脚本命令
passwd=123456
for ((i=1;i<=3;i++))
do
read -p "输入你的密码:" mima
if [ $mima = $passwd ];then
echo "密码正确,请进"
exit
else
echo "密码错误,想想再输哦"
fi
done
echo "警告,密码错3次"
6.3 验证操作
七、例题77.1 需求
编写能够自动生成一个8位随机密码的脚本
7.2 脚本命令
补:1.num=$[$RANDOM % ${#Str}] 中 ${#Str}代表字符长度,可以用具体数字来代替,多少位数就输多少 2.tmp=${Str:num:1}截取字符命令,其中Str指随机字符串;num指从第几位截取;1指截取的步长 3.+=叠加命令 |
7.3 验证操作
八、例题88.1 需求
写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额
8.2 脚本命令
a=0
i=1
sum=0
while [ $a -eq 0 ]
do
echo "欢迎来到第 $i 家商店"
read -p "是否进店选购(yes/no):" doing
while [ $doing = "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):" doing
done
read -p "是否继续逛下一家商店(yes/no):" going
if [ $going = "yes" ];then
let i++
else
echo -e "谢谢惠顾!\n你一共逛了 $i 个商店.\n合计消费总额为 $sum 元"
exit
fi
done
8.3 验证操作
九、例题99.1 需求
输出环境变量PATH所包含的所有目录以及其中的子目录和所有可执行文件