Java教程

Shell循环练习题

本文主要是介绍Shell循环练习题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Shell循环练习题

目录
  • Shell循环练习题
    • 1.计算从1到100所有整数的和
    • 2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
    • 3.求从1到100所有整数的偶数和、奇数和
    • 4.执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
    • 5.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
    • 6.用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
    • 7.编写能够自动生成一个8位随机密码的脚本
    • 8.写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。
    • 9.mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt,输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

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

#!/bin/bash

#for
for (( a=1; a<=100; a++ ))
  do
    sum=$[$sum + $a]
  done
echo "for:1到100的所有整数的和为 $sum"

#while
b=1
while [ $b -le 100 ]
  do
    he=$[$he + $b]
    let b++
  done
echo "while:1到100的所有整数的和为 $he"

#until
c=1
until [ $c -gt 100 ]
  do
    qiuhe=$[$qiuhe + $c]
    let c++
  done
echo "until:1到100的所有整数的和为 $qiuhe"

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

#!/bin/bash

read -p "请输入一个小于100且大于0的整数:" num

#for
if [ $num -gt 0 -a $num -lt 100 ];then
  for ((a=1; a<=$num;a++))
    do
      sum=$[$sum + $a]
    done
  echo "for:1到$num 之间的所有整数的和为$sum "

elif [ $num -eq 0 ];then
  echo "for:您输入的数字为0,并没有大于0,请重新输入"

elif [ $num -lt 0 ];then
  echo "for:您输入的数字$num小于0,请重新输入"

elif [ $num -eq 100 ];then
  echo "for:您输入的数字为100,并没有小于100,请重新输入"

elif [ $num -gt 100 ];then
  echo "for:您输入的数字$num大于100,请重新输入"

else
  echo "for:您输入的不是一个整数,请重新输入"
fi

#while
if [ $num -gt 0 -a $num -lt 100 ];then
  b=1
  while [ $b -le $num ]
    do
      he=$[$he + $b]
      let b++
    done
  echo "while:1到$num 之间的所有整数的和为$he "

elif [ $num -eq 0 ];then
  echo "while:您输入的数字为0,并没有大于0,请重新输入"

elif [ $num -lt 0 ];then
  echo "while:您输入的数字$num小于0,请重新输入"

elif [ $num -eq 100 ];then
  echo "while:您输入的数字为100,并没有小于100,请重新输入"

elif [ $num -gt 100 ];then
  echo "while:您输入的数字$num大于100,请重新输入"

else
  echo "while:您输入的不是一个整数,请重新输入"
fi

#until
if [ $num -gt 0 -a $num -lt 100 ];then
  c=1
  until [ $c -gt $num ]
    do
      qiuhe=$[$qiuhe + $c]
      let c++
    done
  echo "until:1到$num 之间的所有整数的和为$qiuhe "

elif [ $num -eq 0 ];then
  echo "until:您输入的数字为0,并没有大于0,请重新输入"

elif [ $num -lt 0 ];then
  echo "until:您输入的数字$num小于0,请重新输入"

elif [ $num -eq 100 ];then
  echo "until:您输入的数字为100,并没有小于100,请重新输入"

elif [ $num -gt 100 ];then
  echo "until:您输入的数字$num大于100,请重新输入"

else
  echo "until:您输入的不是一个整数,请重新输入"
fi

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

#!/bin/bash

#for
for (( a=1; a<=99; a+=2 ))
  do
    ji=$[$ji + $a]
  done
echo "for:从1到100,所有整数的奇数和为$ji"

for (( b=2; b<=100; b+=2 ))
  do
    ou=$[$ou + $b]
  done
echo "for:从1到100,所有整数的偶数和为$ou"

#while
c=1
while [ $c -le 99 ]
  do
    jishu=$[$jishu +$c]
    let c+=2
  done
echo "while:从1到100,所有整数的奇数和为$jishu"

d=2
while [ $d -le 100 ]
  do
    oushu=$[$oushu +$d]
    let d+=2
  done
echo "while:从1到100,所有整数的偶数和为$oushu"

#until
e=1
until [ $e -gt 99 ]
  do
    jihe=$[$jihe +$e]
    let e+=2
  done
echo "until:从1到100,所有整数的奇数和为$jihe"

f=2
until [ $f -gt 100 ]
  do
    ouhe=$[$ouhe +$f]
    let f+=2
  done
echo "until:从1到100,所有整数的偶数和为$ouhe"

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

#!/bin/bash

username=$1

if grep "$username:" /etc/passwd &> /dev/null;then
  echo "该用户已存在"
else
  read -p "该用户不存在,正在为您创建该用户,请输入密码:" passwd
  useradd $1 && echo $passwd | passwd --stdin $1 &> /dev/null
  echo "用户$1创建成功"
fi

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

#!/bin/bash

read -p "请输入您想要测试的网段:" a
#for
for ((b=1; b<=20; b++ ))
  do
    ip=${a%.*}.$b
    ping -c 3 -i 0.5 -w 2 $ip &> /dev/null
    if [ $? -eq 0 ];then
      echo $ip >> host_ip
    fi
  done
echo "for:测试成功,已将通信主机ip记录于host_ip中"

#while
c=1
while [ $c -le 20 ]
  do
    ipadd=${a%.*}.$c
    let c++
    ping -c 3 -i 0.5 -w 2 $ipadd &> /dev/null
    if [ $? -eq 0 ];then
      echo $ipadd >> host_ip
    fi
  done
echo "while:测试成功,已将通信主机ip记录于host_ip中"

#until
d=1
until [ $d -gt 20 ]
  do
    ipaddrs=${a%.*}.$d
    let d++
    ping -c 3 -i 0.5 -w 2 $ipaddrs &> /dev/null
    if [ $? -eq 0 ];then
      echo $ipaddrs >> host_ip
    fi
  done
echo "until:测试成功,已将通信主机ip记录于host_ip中"

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

#!/bin/bash

read -p "请先设置一个密码:" passwd
read -p "请输入您的密码:" mima
c=1
while [ $c -lt 3 ]
  do
    if [ $mima = $passwd ];then
      echo "密码正确,服务启动中"
      exit
    else
      read -p "密码错误,请重新输入:" mima
        if [ $mima = $passwd ];then
          echo "密码正确,服务启动中"
          exit
        else
          let c++
        fi
    fi
  done

if [ $c -eq 3 ];then
  echo "错误三次,暴破滚粗"
  exit
fi

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

#!/bin/bash

keywords="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!@#$%^&*()_+{}:<>?[];,./"

for a in {1..8}
do
  num=$[$RANDOM % ${#keywords}]
  mima=${keywords:$num:1}
  password+=$mima
done

echo "随机密码为:$password"

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

#!/bin/bash

sum=0
shop=1
read -p "这是第一家店铺,请问是否进入:(Y/N)" jinru
  while [ $jinru = Y ]
    do
      echo "选项1衣服500元"
      echo "选项2裤子400元"
      echo "选项3鞋子350元"
      echo "选项4帽子150元"
      echo "选项5袜子50元"
      echo "选项6不再购买任何商品"

     read -p "选择你要购买的商品:" goods
      case $goods 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]
      ;;

      6)
      read -p "选择是否继续或停止购物,或是换店逛逛?(continue/stop/change)" xz
      if [ $xz = continue ];then
        echo "请继续在本店购物" 
      elif [ $xz = change ];then
        echo "在本店共消费$sum 元"
        let shop++
        echo "欢迎来到第$shop家店铺"
      elif [ $xz = stop ];then
        echo "本次购物共消费$sum 元,请支付"
        echo "支付成功,欢迎下次光临"
        exit
      else
        echo "输入错误"
      fi
      ;;

      *)
      echo "目前没有该商品,掌柜正在努力进货"
      ;;
      esac
    done

9.mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt,输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

#!/bin/bash

mkdir -p /root/bin/aa/bb/cc/dd
touch /root/bin/aa/bb/cc/dd/abc.txt

OLDIFS=$IFS
IFS=$IFS':'

for a in $PATH
do
  echo "$a:"
  floder=$(find $a -type d)
  for d in $floder
  do
    echo "$d"
  done

  file=$(find $a -type f)
  for f in $file
  do
    if [ ! -x "$f" ];then
      echo "-- $f"
    fi
  done
done

IFS=$OLDIFS
这篇关于Shell循环练习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!