Shell循环练习题
2021/7/19 7:04:52
本文主要是介绍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循环练习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?