没事就要多做多练,Shell脚本循环例题做一做

Shell脚本循环例题

 

 

 

                一、示例1

                二、示例2

                三、示例3

                四、示例4

                五、示例5

                六、示例6

                七、示例7

                八、示例8

 

 

 

 

一、示例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

 

 

 

posted @ 2020-07-19 10:51  盖旭昇  阅读(90)  评论(0编辑  收藏  举报