目录
一:何为循环
1.循环概述
2.使用循环的好处
二:for循环语句
1.for语句的用法
2. 语法结构
(1)一般格式
(2)类C语言格式
(3)死循环
3.事例
4.常用转义符
5.制作九九乘法表
三:while循环
1.while语句
2.while语句事例
四:until循环
1.until语句
2.until语句事例
五:跳出循环
1.continue跳出循环
2. coontinue 2
3.break跳出循环
4.break 2
总结:编写脚本的思路
一:何为循环
1.循环概述
循环是一种控制流程的结构,用于重复执行一段代码。
而遍历是一种数据操作的过程,用于访间并处理数据结构中的每个元素。
在某些情况下,循环和遍历可以结合使用,以便在循环中遍历数据结构并对其进行操作。
循环(Loop) 是计算机编程中非常重要的一种结构,其主要目的是为了简化代码编写。
提高代码的重复利用率,以及提高程序的效率。
2.使用循环的好处
重复执行代码:通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写, 减少程序代码量,提高程序的可读性和可维护性。
简化程序逻辑:使用循环可以使程序逻辑更加简洁明了,提高程序的可读性和可理解性。降低代码出错的可能性。
提高代码的重复利用率:通过将重复的代码封装在循环结构中,可以提高代码的重复利用率,减少代码冗余。
提高程序的效率:循环可以让程序自动化地执行重复任务,从而减少人工干预的次数,提高程序的效率和性能。
二:for循环语句
1.for语句的用法
读取不同的变量值,用来逐个执行同一组命令
for循环经常使用在已经zhidao要进行多少次循环的场景
格式:
for 变量名 in 取值列表
do
命令序列
done
2. 语法结构
(1)一般格式
(2)类C语言格式
for ((expr1;expr2;expr3))
do
echo
done
(3)死循环
for ((;;))
3.事例
(1)批量创建用户,用户名存放在users.txt文件中,每一个初始密码为123456。
(2)根据ip地址检测主机状态,IP地址存放在ipadds.txt文件中,每行一个,使用ping命令检测各主机的联通性,ping通的ip地址放到/opt/hosts文件中
4.常用转义符
echo -n 表示不换行输出
echo -e 输出转义字符,将转义后的内容输出到屏幕上
常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。
\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。
\n 换行,被输出的字符从"\n"处开始另起一行。
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;
\v 与\f相同;
\t 转以后表示插入tab,即横向制表符;
\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
\\ 表示插入"\"本身;
5.制作九九乘法表
(1)制作长方形图表
(2)制作等腰三角形图表
(3)制作九九乘法表
脚本解释:for i in {1..9}设置的是循环9次,
j<=i 表示的是在每次$i循环时$j小于等于$i,大于$i的$j不显示出来
j++是一个后缀自增运算符,表示将变量j的值加1,并返回原始值。
(4)制作倒的九九乘法表
三:while循环
1.while语句
while循环满足条件执行,不满足不执行
用于不知道循环次数,需要主动结束循环或达到条件结束循环。
while [ 判断条件]
do
执行动作 while循环执行动作
done while循环结束标志
2.while语句事例
(1)输出0-5
(2)批量添加用户
(3)猜数字
(4)计算机
(5)商场购物并打折
#!/bin/bash
i=1
sum=0
while [ $i -eq 1 ]
do
echo "要不要进第$i家商店看看呢"
read -p "是否进入看看(yes/no)" doing
while [ $doing = "yes" ]
do
echo "1:衣服 ¥200"
echo "2:鞋子 ¥150"
echo "3:帽子 ¥50"
echo "4:裤子 ¥165"
read -p "请选择需要购买的商品序列号:" num
case $num in
1)
echo "衣服购买成功!"
expr $[ sum+=200 ] &> /dev/null
;;
2)
echo "鞋子购买成功!"
expr $[ sum+=150 ] &> /dev/null
;;
3)
echo "帽子购买成功!"
expr $[ sum+=50 ] &> /dev/null
;;
*)
echo "裤子购买成功!"
expr $[ sum+=165 ] &> /dev/null
;;
esac
read -p "是否继续进行购买(yes/no)" doing
done
let i++
if [ $doing = "no" ]
then continue
fi
done
echo "今天您的购物总价为:$sum"
if [ $sum -ge 150 ] && [ $sum -lt 200 ];then
let sum=sum-50
elif [ $sum -ge 200 ] && [ $sum -le 400 ];then
let sum=$sum-100
fi
echo "打折之后的价格为:$sum"
四:until循环
1.until语句
通常用于当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环,比如等待某个进程退出、等待某个文件被创建等等。
格式:
until 条件测试操作
do
命令序列
done
2.until语句事例
计算0-50的总值
#!/bin/bash
#功能1:0-50的和是多少?
#i=0;s=0
#until [ $i -eq 51 ]
#do
# let s+=i
# let i++
#done
#echo $s
五:跳出循环
1.continue跳出循环
表示满足continue条件是跳出循环,但是不影响后续循环执行
它的作用是在循环内部跳过本次循环并继续下一次循环
2. coontinue 2
continue 2会跳过当前循环和两层外层循环的迭代
3.break跳出循环
在循环内部,当执行到 break 命令时,会立即跳出当前的循环,停止循环执行,然后继续执行下一条指令。
可以使用 break 命令来提前终止循环,例如当达到特定条件时或者已经执行了足够的次数。
4.break 2
break 2 会跳出当前循环和外层循环的迭代
总结:编写脚本的思路
1.首先明确脚本的功能
1.1案例:需求是创建用户并测试用户20个
->那肯定要用循环for、 while
->知道需求含义来定义脚本的功能
2.编写脚本时会使用到哪些命令?
2.1如上面的需求:就要使用useradd passwd let echo for while 等命令
3.把变化的数据使用变量表示【记得要先定义哦】
3.1固定长的定义变量、经常调用的参数可设变量
3.2变化的定义变量
4.选择适合的流程控制
4.1【循环语句、双分支、多分支、case等一些控制语句 】