一、循环介绍
循环是一种控制流程的结构,用于重复执行一段代码
遍历是一种数据操作的过程,用于访问并处理数据构成中的每个元素
在某些情况下,循环和遍历可以结合使用,以便在循环中遍历数据结构并对其进行操作
循环是计算机编程中非常重要的一种结构,其主要目的是为了简化代码编写,提高代码的重复利用率,及提高程序的效率。以下是使用循环的一些好处:
- 重复执行代码:通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写
- 简化程序逻辑:通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写,减少程序代码量,提高程序的可读性和可维护性。
- 提高代码的重复利用率:通过将重复的代码封装在循环结构中,可以提高代码的重复利用率,减少代码冗余。
- 提高程序的效率:循环可以让程序自动化执行重复任务,从而减少人工干预的次数,提高程序的效率和性能。
二、for语句的结构
读取不同的变量值,用来逐个执行同一组命令
#一般格式:
for 变量名 in 取值列表
do
命令序列
done
#类似C语言格式:
for ((i=0;i<555;i++))
do
echo “$i”
done
#死循环格式
for ((;;))
do
命令序列
done
三、常用转义字符
echo -n:表示不换行输出
echo -e:输出转义字符,将转义后的内容输出到屏幕上
只有加了-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"前面的字符不会覆盖
\:表示插入“\”本身
四、跳出循环
1、continue
continue表示满足continue条件时跳出循环,但不影响后续循环执行,它的作用是在循环内部跳过本次循环并继续下一次循环
2、break
break表示满足break条件时直接结束此次循环
五、实战案例
1、for单循环
案例一:单个变量为一串连续得字母或者数字
1、字母
# vim for.sh
!/bin/bash
for i in {a..d} // 变量i={abcd}
do //命令序列
echo $i //输出abcd
done //结束循环
# bash for.sh //运行脚本,输出如下
a
b
c
d
2、数字
# vim for.sh
!/bin/bash
for i in {1..4} // 变量i={abcd}
do //命令序列
echo $i //输出abcd
done //结束循环
# bash for.sh //运行脚本,输出如下
1
2
3
4
案例二:单个变量为不连续得数字、字母、字符串
# vim for.sh
!/bin/bash
params=("param1" "param2" "param3") //此处可以是字母、数字、字符串等
for param in "${params[@]}"
do
echo $param
done
# bash for.sh //运行脚本,输出如下
param1
param2
param3
案例三:多个变量循环
#! /bash/shell
#以value_name=(value1 value2 value3)的形式定义数组
a=(`ls |grep -v ^1|grep -v 22281_k8s_qkd_http.conf|grep -v for.sh| awk -F '_' '{print $1}'`)
b=(`ls |grep -v ^1|grep -v 22281_k8s_qkd_http.conf|grep -v for.sh`)
#以 ${a[number]} 的形式调用数组的第 number 个变量
for (( i=0; i<16; i++ ))
do
echo ${a[$i]} and ${b[$i]}
done
2、for双循环
[root@c7-1 ~]# vim 99.sh!/bin/bash
for ((i=1;i<=9;i++)) //外循环,$i的取值为1,每次循环+1,等于9结束
do
for ((j=1;j<=i;j++)) //内循环,$j的取值为1,每次循环+1,等于$i结束
do
echo -n " $i x $j=$(expr $i * $j)" //每次循环不换行输出 $ix$j
if [$j -eq $i ] //判断$j和$i是否相等
then //条件成立
echo -e "\n" //则换行
fi //判断结束
done //内循环结束
done //外循环结束
3、例3 for双循环加跳出循环
[root@localhost opt]# vim ss.sh
for i in {1..3}
do
for ((j=1;j<=5;j++))
do
if [ $j == 2 ]
then
continue //跳出j等于2的当此循环,不影响后面的循环
fi
echo "$j"
done
done
[root@localhost opt]# vim ss.sh
for i in {1..3}
do
for ((j=1;j<=5;j++))
do
if [ $j == 2 ]
then
continue 2 //跳出当前循环,再跳出大循环
fi
echo "$j"
done
done
[root@localhost opt]# vim ss.sh
for i in {1..3}
do
for ((j=1;j<=5;j++))
do
if [ $j == 2 ]
then
break //直接破坏当前循环
fi
echo "$j"
done
done
1
1
1
参考文章:
https://blog.csdn.net/m0_74412260/article/details/130405199
https://www.cnblogs.com/huandada/p/10072487.html
- 本文固定链接: http://www.jiagou.cc/565/
- 转载请注明: 摘星怪 于 架构迷 发表