for、while、until 例题

 

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 @   我出必行  阅读(111)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示