shell脚本编写之路—循环
声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
感兴趣的师傅可以看看前面的几篇文章
for循环
上一节讲述啦简单的for循环编写脚本,通过给定的字符串,那么如果循环的数据很大呢?比如要输出1-100的所有整数这个时候就不能在给定字符串来进行引用啦,比如下面这个
for i in `seq 1 100`
do
echo $i
done
简单解释一下:
for i in `seq 1 100`
for
启动啦一个循环,seq 1 100
是一个命令,用于生成从1到100的整数序列。来作为for循环的值,每次循环时,变量i都会被赋予这个序列中的一个值。
do
标志for循环的开始
echo $i
在循环体内,用于打印变量i
的值。每次循环时都会更新
done
标志循环体结束
运行结果:
或者换一种方式进行编写:
#!/bin/bash
for ((i=1; i<100; i++))
do
echo $i
done
注意这里一定要换成bash指令,不然会报错
主要原因是因为for ((i=1; i<100; i++))
是一个bash中的C风格for循环,
运行结果:
会发现他的结尾直到99,是因为当i=99时,已经无法满足i<100
的循环条件,如果想要输出到100就要改成i<=100
或者i<101
while 循环
while
循环和for
循环类似,写个简单一点的脚本来看看
i=1
while (($i<=10))
do
echo $i
((i++))
done
while (( $i <= 10 ))
:开始一个while
循环,条件是变量i
的值小于或等于10。注意,使用了双括号(( ))
来进行算术比较,并且变量i
前面有$
符号来引用其值。
观察可以发现和for循环大差不差,只是需要讲改变变量的语句写入到循环体中
运行结果:
在下面也可以不用(())
换成let
i=1
while (($i<=10))
do
echo $i
let "i++"
done
效果是一样的
until循环
一个新的循环,老规矩先写一个脚本来看看
i=0
until [ ! $i -lt 10 ]
do
echo $i
((i++))
done
until [! $i -lt 10 ]
是一个条件测试表达式。其中,$i
是引用前面定义的变量 i
的值,-lt
是比较操作符,用于判断左边的值是否小于右边的值。整个表达式 $i -lt 10
的结果是一个布尔值(真或假),如果 i
的值小于 10,那么这个表达式的值为真。而前面的 !
是逻辑非操作符,它会对后面表达式的结果取反。所以,整个 until
循环的条件就是当 i
的值不小于 10(即大于等于 10)时,循环停止。
也可以写成:
i=0
until [ $i -ge 10 ]
do
echo $i
((i++))
done
运行结果一样,因为归根到底来说两个脚本的逻辑是一样的
