05-10-shell(7)for循环与while循环

声明!

学习视频来自B站up主 泷羽sec ,有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!

文章为个人学习笔记。

for循环

例子1

创建文件 01.sh

for i in `seq 1 100`
do 
	echo $i
done
  1. ​for i in​ seq 1 100``:

    • 这是一个for​循环的开始,用于迭代一系列值。

    • ​for i in​表示循环变量i​将依次取后面的值。

    • ​`seq 1 100`​是反引号包围的命令,用于执行seq​命令,生成从1到100的数字序列。seq​是Linux系统中的一个命令,用于生成一系列的数字。

    • 反引号(`​)用于命令替换,即执行反引号内的命令,并将命令的输出替换到原位置。这里,seq 1 100​的输出(即1到100的数字序列)将被替换到for​循环中。

  2. ​do​:

    • ​do​关键字标志着for​循环体的开始。在do​和done​之间的所有命令都会对for​循环中的每个元素执行。

  3. ​echo $i​:

    • ​echo​是一个Shell命令,用于在终端上打印其后的参数。

    • ​$i​表示循环变量i​的值,每次循环迭代时,i​都会被赋予seq​命令生成的下一个数字。

    • 因此,echo $i​的作用是在每次迭代中打印出当前i​的值。

  4. ​done​:

    • ​done​关键字标志着for​循环体的结束。当for​循环完成所有迭代后,Shell会执行done​之后的命令。

综上所述,这段代码的执行流程如下:

  • Shell首先执行seq 1 100​命令,生成一个从1到100的整数序列。

  • 然后,for​循环开始,变量i​被赋予序列中的第一个数字(1)。

  • ​echo $i​命令被执行,打印出当前i​的值(1)。

  • ​i​的值更新为序列中的下一个数字(2),echo $i​再次执行,打印出2。

  • 这个过程一直重复,直到i​的值达到100。

  • 当序列中的所有数字都被处理完毕后,for​循环结束。

最终结果是在终端中逐行打印出从1到100的所有整数。

┌──(root㉿kali)-[~/work]
└─# ls
01.sh  dome.sh  k.sh
                                                                                                                                      
┌──(root㉿kali)-[~/work]
└─# vim 01.sh   
                                                                                                                                      
┌──(root㉿kali)-[~/work]
└─# sh 01.sh
1
2
3
4
5
6
7
8
9
10

例子2

代码的内容如下:

for i in $(seq 1 100)
do
	echo $i
done

  1. ​for i in $(seq 1 100)​:这是一个for​循环的声明,它告诉Shell按照某种方式迭代一系列的值。在这个例子中,for​循环的变量是i​,它将依次取$(seq 1 100)​命令的输出作为值。

    • ​$(...)​:这是命令替换的现代形式,它允许你执行括号内的命令,并将命令的标准输出作为结果返回。在这个例子中,$(seq 1 100)​会生成一个从1到100的数字序列,并将其作为for​循环的输入。

    • ​seq 1 100​:这是一个生成数字序列的命令。seq​命令接受一系列数字作为参数,并输出它们。在这个例子中,seq​命令生成从1开始到100结束的整数序列。

  2. ​do​:这个关键字标志着for​循环体的开始。在do​和done​之间的所有命令都会对for​循环中的每个元素执行。

  3. ​echo $i​:这是一个echo​命令,用于在终端上打印变量$i​的值。在每次循环迭代中,$i​都会被赋予seq​命令生成的下一个数字,从1开始直到100。

  4. ​done​:这个关键字标志着for​循环体的结束。当for​循环完成所有迭代后,Shell会执行done​之后的命令。

综上所述,这段代码的执行流程如下:

  • Shell首先执行seq 1 100​命令,生成一个从1到100的整数序列。

  • 然后,for​循环开始,变量i​被赋予序列中的第一个数字(1)。

  • ​echo $i​命令被执行,打印出当前i​的值(1)。

  • ​i​的值更新为序列中的下一个数字(2),echo $i​再次执行,打印出2。

  • 这个过程一直重复,直到i​的值达到100。

  • 当序列中的所有数字都被处理完毕后,for​循环结束。

最终结果是在终端中逐行打印出从1到100的所有整数。

例子3

for ((i=1;i<10;i++))
do
	echo $i
done
  1. ​for ((i=1; i<10; i++))​:

    • 这是一个for​循环的声明,使用C风格的语法,适用于Bash。

    • ​i=1​:初始化部分,设置循环变量i​的初始值为1。

    • ​i<10​:条件判断部分,只要i​的值小于10,循环就会继续执行。

    • ​i++​:迭代部分,每次循环结束后,i​的值自增1。

  2. ​do​:

    • ​do​关键字标志着for​循环体的开始。在do​和done​之间的所有命令都会对for​循环中的每个元素执行。

  3. ​echo $i​:

    • ​echo​是一个Shell命令,用于在终端上打印其后的参数。

    • ​$i​表示循环变量i​的值,每次循环迭代时,i​都会被赋予新的值。

    • 因此,echo $i​的作用是在每次迭代中打印出当前i​的值。

  4. ​done​:

    • ​done​关键字标志着for​循环体的结束。当for​循环完成所有迭代后,Shell会执行done​之后的命令。

综上所述,这段代码的执行流程如下:

  • 初始化循环变量i​为1。

  • 检查条件i<10​是否成立。如果是,执行循环体。

  • 在循环体中,使用echo​命令打印出当前i​的值。

  • 执行迭代部分i++​,将i​的值增加1。

  • 返回到条件判断部分,再次检查i<10​是否成立。如果成立,重复执行循环体。

  • 当i​的值达到10时,条件i<10​不再成立,循环结束。

最终结果是在终端中逐行打印出从1到9的所有整数。注意,这里不会打印出10,因为循环条件是i<10​,当i​等于10时,循环停止。

┌──(root㉿kali)-[~/work]
└─# sh 01.sh
01.sh: 1: Syntax error: Bad for loop variable

┌──(root㉿kali)-[\~/work]
└─# dash 01.sh01.sh: 1: Syntax error: Bad for loop variable
┌──(root㉿kali)-[~/work]
└─# bash 01.sh
1
2
3
4
5
6
7
8
9

while循环

例子1

i=1
while(($i<=10))
do
	echo $i
	((i++))
done
  1. ​i=1​:

    • 这是在循环开始之前对变量i​的初始化,将其值设置为1。

  2. ​while (( $i <= 10 ))​:

    • ​while​关键字开始一个循环,它将重复执行循环体,直到条件不再满足。

    • ​(( $i <= 10 ))​是条件判断部分,使用双括号(( ))​来进行算术比较。这里检查变量i​的值是否小于或等于10。如果是,循环将继续执行。

  3. ​do​:

    • ​do​关键字标志着while​循环体的开始。在do​和done​之间的所有命令都会在每次循环迭代中执行。

  4. ​echo $i​:

    • ​echo​是一个Shell命令,用于在终端上打印其后的参数。

    • ​$i​表示循环变量i​的值。

    • 因此,echo $i​的作用是在每次迭代中打印出当前i​的值。

  5. ​((i++))​:

    • 这是迭代部分,用于在每次循环结束后增加变量i​的值。((i++))​是Bash中的算术扩展,它将i​的值增加1。

  6. ​done​:

    • ​done​关键字标志着while​循环体的结束。当循环条件不再满足时,Shell将停止执行循环体,并继续执行done​之后的命令。

综上所述,这段代码的执行流程如下:

  • 初始化变量i​为1。

  • 检查条件$i <= 10​是否成立。如果是,执行循环体。

  • 在循环体中,使用echo​命令打印出当前i​的值。

  • 执行迭代部分((i++))​,将i​的值增加1。

  • 返回到条件判断部分,再次检查$i <= 10​是否成立。如果成立,重复执行循环体。

  • 当i​的值达到11时,条件$i <= 10​不再成立,循环结束。

最终结果是在终端中逐行打印出从1到10的所有整数。

┌──(root㉿kali)-[~/work]
└─# sh 01.sh                                                                                                                        
01.sh: 2: cannot open =10: No such file

┌──(root㉿kali)-[~/work]
└─# dash  01.sh                                                                                                                    
01.sh: 2: cannot open =10: No such file

┌──(root㉿kali)-[~/work]
└─# bash  01.sh                                                                                                                       
1
2
3
4
5
6
7
8
9
10

例子2

i=1
while(($i<=10))
do
	echo $i
	let "i++"
done
  1. ​i=1​:

    • 这是在循环开始之前对变量i​的初始化,将其值设置为1。

  2. ​while (( $i <= 10 ))​:

    • ​while​关键字开始一个循环,它将重复执行循环体,直到条件不再满足。

    • ​(( $i <= 10 ))​是条件判断部分,使用双括号(( ))​来进行算术比较。这里检查变量i​的值是否小于或等于10。如果是,循环将继续执行。

  3. ​do​:

    • ​do​关键字标志着while​循环体的开始。在do​和done​之间的所有命令都会在每次循环迭代中执行。

  4. ​echo $i​:

    • ​echo​是一个Shell命令,用于在终端上打印其后的参数。

    • ​$i​表示循环变量i​的值。

    • 因此,echo $i​的作用是在每次迭代中打印出当前i​的值。

  5. ​let "i++"​:

    • 这是迭代部分,用于在每次循环结束后增加变量i​的值。let​是Bash中的一个命令,用于执行算术运算。

    • ​"i++"​是let​命令的参数,它指示Bash将i​的值增加1。注意,let​命令中的表达式需要用双引号括起来,以避免Shell对特殊字符进行解释。

  6. ​done​:

    • ​done​关键字标志着while​循环体的结束。当循环条件不再满足时,Shell将停止执行循环体,并继续执行done​之后的命令。

综上所述,这段代码的执行流程如下:

  • 初始化变量i​为1。

  • 检查条件$i <= 10​是否成立。如果是,执行循环体。

  • 在循环体中,使用echo​命令打印出当前i​的值。

  • 执行迭代部分let "i++"​,将i​的值增加1。

  • 返回到条件判断部分,再次检查$i <= 10​是否成立。如果成立,重复执行循环体。

  • 当i​的值达到11时,条件$i <= 10​不再成立,循环结束。

最终结果是在终端中逐行打印出从1到10的所有整数。

┌──(root㉿kali)-[~/work]
└─# sh 01.sh                                                                                                                          
01.sh: 2: cannot open =10: No such file

┌──(root㉿kali)-[~/work]
└─# dash 01.sh
01.sh: 2: cannot open =10: No such file

┌──(root㉿kali)-[~/work]
└─# bash 01.sh                                                                                                                        
1
2
3
4
5
6
7
8
9
10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值