声明!
学习视频来自B站up主 泷羽sec ,有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!
文章为个人学习笔记。
for循环
例子1
创建文件 01.sh
for i in `seq 1 100`
do
echo $i
done
-
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循环中。
-
-
do:
-
do关键字标志着for循环体的开始。在do和done之间的所有命令都会对for循环中的每个元素执行。
-
-
echo $i:
-
echo是一个Shell命令,用于在终端上打印其后的参数。
-
$i表示循环变量i的值,每次循环迭代时,i都会被赋予seq命令生成的下一个数字。
-
因此,echo $i的作用是在每次迭代中打印出当前i的值。
-
-
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
-
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结束的整数序列。
-
-
do:这个关键字标志着for循环体的开始。在do和done之间的所有命令都会对for循环中的每个元素执行。
-
echo $i:这是一个echo命令,用于在终端上打印变量$i的值。在每次循环迭代中,$i都会被赋予seq命令生成的下一个数字,从1开始直到100。
-
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
-
for ((i=1; i<10; i++)):
-
这是一个for循环的声明,使用C风格的语法,适用于Bash。
-
i=1:初始化部分,设置循环变量i的初始值为1。
-
i<10:条件判断部分,只要i的值小于10,循环就会继续执行。
-
i++:迭代部分,每次循环结束后,i的值自增1。
-
-
do:
-
do关键字标志着for循环体的开始。在do和done之间的所有命令都会对for循环中的每个元素执行。
-
-
echo $i:
-
echo是一个Shell命令,用于在终端上打印其后的参数。
-
$i表示循环变量i的值,每次循环迭代时,i都会被赋予新的值。
-
因此,echo $i的作用是在每次迭代中打印出当前i的值。
-
-
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
-
i=1:
-
这是在循环开始之前对变量i的初始化,将其值设置为1。
-
-
while (( $i <= 10 )):
-
while关键字开始一个循环,它将重复执行循环体,直到条件不再满足。
-
(( $i <= 10 ))是条件判断部分,使用双括号(( ))来进行算术比较。这里检查变量i的值是否小于或等于10。如果是,循环将继续执行。
-
-
do:
-
do关键字标志着while循环体的开始。在do和done之间的所有命令都会在每次循环迭代中执行。
-
-
echo $i:
-
echo是一个Shell命令,用于在终端上打印其后的参数。
-
$i表示循环变量i的值。
-
因此,echo $i的作用是在每次迭代中打印出当前i的值。
-
-
((i++)):
-
这是迭代部分,用于在每次循环结束后增加变量i的值。((i++))是Bash中的算术扩展,它将i的值增加1。
-
-
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
-
i=1:
-
这是在循环开始之前对变量i的初始化,将其值设置为1。
-
-
while (( $i <= 10 )):
-
while关键字开始一个循环,它将重复执行循环体,直到条件不再满足。
-
(( $i <= 10 ))是条件判断部分,使用双括号(( ))来进行算术比较。这里检查变量i的值是否小于或等于10。如果是,循环将继续执行。
-
-
do:
-
do关键字标志着while循环体的开始。在do和done之间的所有命令都会在每次循环迭代中执行。
-
-
echo $i:
-
echo是一个Shell命令,用于在终端上打印其后的参数。
-
$i表示循环变量i的值。
-
因此,echo $i的作用是在每次迭代中打印出当前i的值。
-
-
let "i++":
-
这是迭代部分,用于在每次循环结束后增加变量i的值。let是Bash中的一个命令,用于执行算术运算。
-
"i++"是let命令的参数,它指示Bash将i的值增加1。注意,let命令中的表达式需要用双引号括起来,以避免Shell对特殊字符进行解释。
-
-
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