没事就要多做多练,Shell脚本循环例题做一做
Shell脚本循环例题
一、示例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


没事就要多做多练,Shell脚本循环例题做一做的更多相关文章
- shell脚本-循环选择语句
shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...
- 3.shell脚本循环试题
shell脚本循环试题 1.计算从1到100所有整数的和 #!/bin/bash a=0 for i in {1..100} #1到100 #每次循环变量i的值也为循环次数 do a=$[ $a + ...
- shell脚本循环和信号
条件判断 if 条件1:then COMMAND elif 条件2:then COMMAND else COMMAND(:) : 表示pass 不执行任何命令 fi 读取用 ...
- shell脚本循环处理文件数据
有一个日志文件为: # cat data.log 需要提取出里面的数据,写shell脚本实现这个功能: #!/bin/bash OLD=$IFS IFS=$'\n' for entry in $(ca ...
- [Shell] shell 脚本循环恢复的问题
在一个shell脚本中,我大概执行了如下一个脚本: ...} do ...} do ...} do done done done 假设上面的sleep 10秒就是代表我的程序需要执行10秒之久.而现在 ...
- shell脚本循环嵌套
嵌套循环 在循环语句内使用任意类型的命令,包括其他循环命令,叫做嵌套循环.因为是在迭代中迭代,需要注意变量的使用以及程序的效率问题. 下面举一个for循环嵌套for循环的例子: wangsx@SC-2 ...
- 使用shell脚本循环处理文本
公司是使用puppet来进行配置管理, 某天修改完puppet后领导回复: 我们有一个文档cabinet.txt记录了物理机器所在的机柜, 除了文档里的其他机器都是虚拟机或云服务器, 对虚拟机的pup ...
- shell脚本循环执行mysql语句
参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: ...
- shell脚本--循环结构
shell的循环结构有while和for两种 for循环 #!/bin/bash #文件名:test.sh i=4 for i in 2 4 6 8 10 do echo $i done echo $ ...
随机推荐
- Lua时间互转
1. 时间戳转成格式化字符串 直接利用函数os.date()将时间戳转化成格式化字符串. local timestamp = 1561636137; local strDate = os.date(& ...
- Python+Selenium+Appium+API学习使用过的命令
adb devices 查看连接电脑的手机设备 weditor 启动uiautomatorviewer2元素定位工具 以下2个命令作用一样 adb shell dumpsys activity | f ...
- python_appium 之使用Appium Inspector定位工具进行元素识别,编写验证demo
一.前提条件 appium环境搭建完成,模拟器Genymotion 安装完成,且已经下载成功了模拟设备 二.元素识别操作步骤及demo 1.进入appium如下菜单 2.填写Desired Capab ...
- mybatis设置自动提交事务
我们想要mybatis帮助我们自动提交事务其实很简单,只需要在SqlSessionFactory对象的openSession方法中设置参数为true就可以了,mybatis工具类如下: public ...
- Task04:集合运算
4.1 表的加减法 4.1.1 什么是集合运算 集合在数学领域表示"各种各样的事物的总和", 在数据库领域表示记录的集合. 具体来说,表.视图和查询的执行结果都是记录的集合, 其中 ...
- 【NX二次开发】获取片体的边UF_MODL_ask_body_boundaries()
获取片体的边UF_MODL_ask_body_boundaries(),如果输入实体,则获取的片体的边的数量为0. 源码: #include "Text.h" extern Dll ...
- C# 扫描并读取图片中的文字
本文介绍如何通过C# 程序来扫描并读取图片中的文字,这里以创建一个.Net Core程序为例.下面是具体步骤,供参考. 程序测试环境: Visual Studio版本要求不低于2017 图片扫描工具: ...
- Pytest学习笔记2-setup和teardown
前言 我们在做自动化的时候,常常有这样的需求: 执行每一条用例时,都重新启动一次浏览器 每一条用例执行结束时,都清除测试数据 在unittest中,我们可以使用 setUp() 和 tearDown( ...
- RAC+DG修改sys密码
一.版本: 操作系统版本:SUSE 11 数据库版本:11.2.0.4 二.需求 因安全要求,需要修改SYS密码 三.步骤 1节点执行命令: alter user sys identified by ...
- Java安全之挖掘回显链
Java安全之挖掘回显链 0x00 前言 前文中叙述反序列化回显只是为了拿到Request和Response对象.在这里说的的回显链其实就是通过一连串反射代码获取到该Request对象. 在此之前想吹 ...