既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
for (( variable assignment ; condition ; iteration process ))
一个例子足以说明:
#!/bin/bash
for (( i = 0; i <= 10; i++ ))
do
echo $i
done
上面例子循环11次,从0到10依次输出。稍微有过编程基础的都对此应该很熟悉。就不做详细阐述了。
二、while循环
如果你习惯了其它语言的 while 循环,那么到这儿你又会发现这个while循环有点变态了。与其它编程语言while的不同在于:在bash中的while语句,看起来似乎是结合了 if-then 语句(参考上一篇)和for循环语句。其基本格式如下:
while test command
do
other commands
done
与 if-then 语句一样,后面接 test 命令,如果 test 后面的命令的退出状态码为0. 那么就进入循环,执行 do 后面的逻辑。要注意在 do 后面的逻辑中写条件,避免死循环。
既然是接 test 命令,那么一切都可以参考if-then的test
示例一:
#!/bin/bash
flag=0
while test $flag -le 10
do
echo $flag
# 如果没有这句,那么flag的值一直为0,就会无限循环执行
flag=$[$flag + 1]
done
以上判断 flag 是否大于或者等于10, 如果满足条件,那么输出当前 flag 的值,然后再将 flag 的值加 1。最终输出的结果为 0 到 10 的结果。
结合上一篇文章test的写法,我们还可以将以上示例变形为如下:
示例二:
#!/bin/bash
flag=0
while [ $flag -le 10 ]
do
echo $flag
flag=$[$flag + 1]
done
示例三:
flag=0
while (( $flag <= 10 ))
do
echo $flag
flag=$[$flag + 1]
done
三、until循环语句
until 语句基本格式如下:
until test commands
do
other commands
done
在掌握 while 循环语句之后, until语句就很简单了。until语句就是与while语句恰好相反, while语句是在test命令退出状态码为0的时候执行循环, 而until语句是在test命令退出状态码不为0的时候执行。
示例:
#!/bin/bash
flag=0
until (( $flag > 10 ))
do
echo $flag
flag=$[ $flag + 1 ]
done
以上输出 0 到 10 的值。until 后面的条件与上面 while 例子完全相反。
好啦,到此,我们学完了 shell 的循环语句啦。不过上面我们写的循环语句都是根据条件执行完毕,如果我们在执行的过程中想退出,该怎么办?接下来就继续看看怎么控制循环语句。
四、控制循环
与其它编程语言一样,shell是通过break
和continue
命令来控制循环的。下面就分别来看看二者的基本用法:
break:
- break用于跳出当前循环
示例一:
#!/bin/bash
for (( flag=0; flag <= 10; flag++ ))
do
if (( $flag == 5 ))
then
break
fi
echo $flag
done
以上当 flag 的值为5的时候,退出循环。输出结果为0-4的值。
- break用于跳出内层循环
示例二:
#!/bin/bash
flag=0
while (( $flag < 10 ))
do
for (( innerFlag=0; innerFlag < 5; innerFlag++ ))
do
if (( $innerFlag == 2 ))
then
break
fi
echo "innerFlag=$innerFlag"
done
echo "outerFlag=$flag"
done
以上代码在执行内部循环for的时候,当 innerFlag 值为2的时候就会跳出到外层的while循环, 由于外层循环一直flag都为0, 所以while会成为一个死循环,不停的输出:
…
innerFlag=0
innerFlag=1
outerFlag=0
…
- break用于跳出外层循环
break 可后接数字,用于表示退出当前循环的外层的第几层循环。
示例三:
#!/bin/bash
flag=0
while (( $flag < 10 ))
do
for (( innerFlag=0; innerFlag < 5; innerFlag++ ))
do
if (( $innerFlag == 2 ))
then
# 2表示外面一层循环
break 2
fi
echo "innerFlag=$innerFlag"
done
echo "outerFlag=$flag"
done
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
图片转存中…(img-IDXL4xMN-1715530365470)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新