for、while、until 例题
2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
4.执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
5.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
6.用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
#!/bin/bash a=0 for ((i=1;i<=100;i++)) do a=$[$a+$i] done echo $a
2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
#!/bin/bash e=0 read -p "请输入小于100的整数:" a for ((i=1;i<=$a;i++)) { e=$[$e+$i] } echo "从一加到$a的整数和为:$e"
#!/bin/bash a=0 for ((i=1;i<=100;i+=2)) { a=$[$a+$i] } echo "1-100之间所有奇数的和为$a" b=0 for((i=2;i<=100;i+=2)) { b=$[$b+$i] } echo "1-100之间所有偶数的和为$b"
4.执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
#!/bin/bash read -p "输入你要查找的用户:" user id -u $user &> /dev/null true=$(echo $?) while [ $true = 0 ] do echo "此用户已存在" break done while [ $true != 0 ] do echo "此用户不存在,我们将为你重新添加该用户,并修改密码" useradd $user read -p "请输入新用户密码:" password echo $password | passwd --stdin $user echo "密码修改成功" break done
5.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
#!/bin/bash for ip in 192.168.200.{1..254} { ping -c 3 -i 0.5 -w 2 $ip > /dev/null if [ $? -eq 0 ];then echo "$ip is online" > /opt/hostlist.txt else echo "$ip is offline" > /opt/hostlist.txt fi } cat /opt/hostlist.txt
6.用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
#!/bin/bash a=123456 for i in {1..3} { read -p "输入密码:" b if [ $a = $b ];then echo "正确" exit fi } echo "密码输入错误"
#!/bin/bash Str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" for i in {1..8} do num=$[$RANDOM % ${#Str}] tmp=${Str:num:1} password+=$tmp done echo "随机密码为:$password"
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)" 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) ;; 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
总结:换行输出要加-e,同时在需要换行的句子前加入\n