for、while、until 例题

1.计算从1到100所有整数的和

2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

3.求从1到100所有整数的偶数和、奇数和

4.执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码

5.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中

6.用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警

7.编写能够自动生成一个8位随机密码的脚本

8.写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。

1.计算从1到100所有整数的和

#!/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"

 

 3.求从1到100所有整数的偶数和、奇数和

#!/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 "密码输入错误"

 

 7.编写能够自动生成一个8位随机密码的脚本

#!/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

 

posted @ 2021-07-20 11:23  peiqy  阅读(140)  评论(0编辑  收藏  举报