forked from study-area-cn/learn-linux-basic
更新 src/shell_and_shell_script/loops.md
This commit is contained in:
parent
0d17743272
commit
95860dea4d
|
@ -1,86 +1,92 @@
|
||||||
# 循环
|
# 循环
|
||||||
|
|
||||||
循环是任何编程语言中控制流语法的重要组成部分,它允许我们重复执行一段代码,直到满足某个条件为止。在Shell脚本中,我们可以使用以下几种循环结构:
|
我相信你一定听说过循环这个词,循环可以让我们重复执行一段代码,帮助我们完成一些重复的工作。循环也有许多的类型,有可以一直持续下去的,也可以就执行几次。
|
||||||
|
|
||||||
|
那么在 Shell Script 中,我们可以使用以下几种循环结构:
|
||||||
|
|
||||||
- for-in 循环: 依次循环某个数组中的每个元素。
|
- for-in 循环: 依次循环某个数组中的每个元素。
|
||||||
- for 循环:带有初始化、判断条件、迭代语句的循环。
|
- for 循环:可以方便的从一个数走到另一个数,当然不止这一种用法。
|
||||||
- while循环: 在某个条件为真时,重复执行一段代码。
|
- while循环: 在条件为真时,重复执行一段代码。
|
||||||
- until循环: 在某个条件为假时,重复执行一段代码。
|
- until循环: 在条件为假时,重复执行一段代码。
|
||||||
|
|
||||||
接下来就让我们逐一讲解这些循环结构。
|
接下来就让我们逐一讲解这些循环结构吧。
|
||||||
|
|
||||||
## 数组?
|
## 数组
|
||||||
|
|
||||||
数组是Shell脚本中的一种数据结构,它可以存储多个值,并且可以通过索引来访问这些值。在Shell脚本中,我们可以使用以下语法来定义一个数组:
|
数组是 Shell Script 中的一种数据结构。数组在 sh 上并不存在,你需要使用 bash。它可以存储多个值,并且可以通过数字(索引)来访问这些值。
|
||||||
|
|
||||||
```shell
|
> 在 zsh 等 Shell 中,数组的行为并不总是一样的。下文均使用 bash。
|
||||||
|
|
||||||
|
在 Shell Script 中,我们可以使用以下语法来定义一个数组:
|
||||||
|
|
||||||
|
```bash
|
||||||
array=("value1" "value2" "value3")
|
array=("value1" "value2" "value3")
|
||||||
```
|
```
|
||||||
|
|
||||||
数组中的元素都拥有一个唯一的索引,索引从0开始。我们可以使用以下语法来访问数组中的元素:
|
数组中的元素都拥有一个唯一的索引,索引从 0 开始。我们可以使用下面的方法来访问数组中的元素:
|
||||||
|
|
||||||
```shell
|
```bash
|
||||||
array[0]
|
array[0]
|
||||||
```
|
```
|
||||||
|
|
||||||
这将会返回array数组中的第一个元素,即"value1"。
|
这将会返回 array 数组中的第一个元素,即"value1"。
|
||||||
|
|
||||||
## for-in 循环
|
## for-in 循环
|
||||||
|
|
||||||
for-in循环是Shell脚本中最常用的循环结构之一,它允许我们依次循环某个数组中的每个元素。以下是一个简单的for-in循环示例:
|
for-in 循环是 Shell Script 中最常用的循环结构之一,它允许我们依次循环某个数组中的每个元素。以下是一个简单的 for-in 循环示例:
|
||||||
|
|
||||||
```shell
|
```bash
|
||||||
for variable in array
|
for variable in array
|
||||||
do
|
do
|
||||||
loop_body
|
你的代码
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
在这个示例中,variable是循环变量,array是要循环的数组。在每次循环中,variable都会被赋值为array中的一个元素,然后执行loop_body。当array中的所有元素都被循环完毕后,循环结束。
|
在这个示例中,variable 是循环变量,array 是要循环的数组。在每次循环中,variable 都会被赋值为 array 中的一个元素,然后执行你的代码。当 array 中的所有元素都被循环完毕后,循环结束。
|
||||||
|
|
||||||
## for 循环
|
## for 循环
|
||||||
|
|
||||||
for循环是Shell脚本中另一种常用的循环结构,它允许我们使用初始化、判断条件、迭代语句来控制循环的执行。以下是一个简单的for循环示例:
|
for 循环是 Shell Script 中另一种常用的循环结构,它允许我们使用初始化、判断条件、迭代语句来控制循环的执行。以下是一个简单的for循环示例:
|
||||||
|
|
||||||
```shell
|
```bash
|
||||||
for ((initialization; condition; iteration))
|
for ((初始化语句; 你的条件; 迭代语句))
|
||||||
do
|
do
|
||||||
loop_body
|
你的代码
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
在这个示例中,initialization是循环的初始化语句,condition是循环的判断条件,iteration是循环的迭代语句。在每次循环中,condition都会被判断,如果为真,则执行loop_body,然后执行iteration。当condition为假时,循环结束。
|
在这个例子中,初始化语句会被执行,然后执行一次判断语句。如果判断语句的结果为真,那么就会进行一次循环。当你的代码运行完毕后,会执行一次迭代语句,然后再回去执行判断。
|
||||||
|
|
||||||
## while循环
|
## while 循环
|
||||||
|
|
||||||
while循环是Shell脚本中另一种常用的循环结构,它允许我们在某个条件为真时,重复执行一段代码。以下是一个简单的while循环示例:
|
while 循环允许我们在某个条件为真时,重复执行一段代码。以下是一个简单的示例:
|
||||||
|
|
||||||
```shell
|
```bash
|
||||||
while condition
|
while 条件
|
||||||
do
|
do
|
||||||
loop_body
|
你的代码
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
在这个示例中,condition是循环的判断条件,loop_body是循环的主体。在每次循环中,condition都会被判断,如果为真,则执行loop_body。当condition为假时,循环结束。
|
while 循环就相当于一个 for 循环,但是没有了初始化和迭代语句。如果你在条件的位置写上了 `true`,那么它会永无休止的执行下去,除非你手动停止。
|
||||||
|
|
||||||
## until循环
|
## until 循环
|
||||||
|
|
||||||
until循环刚好与while循环相反,它允许我们在某个条件为假时,重复执行一段代码。以下是一个简单的until循环示例:
|
until 循环刚好与 while 循环相反,它允许我们在某个条件为假时,重复执行一段代码。以下是一个简单的 until 循环示例:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
until condition
|
until 你的条件
|
||||||
do
|
do
|
||||||
loop_body
|
你的代码
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
在这个示例中,condition是循环的判断条件,loop_body是循环的主体。在每次循环中,condition都会被判断,如果为假,则执行loop_body。当condition为真时,循环结束。
|
until 因为 和 while 十分相似,这里就不过多解释了。
|
||||||
|
|
||||||
until循环常常被用于多次尝试的场景下,例如尝试连接到一个远程服务器,直到连接成功为止。
|
until 循环常常被用于多次尝试的场景下,例如尝试连接到一个远程服务器,直到连接成功为止。
|
||||||
|
|
||||||
## 课后作业
|
## 课后作业
|
||||||
|
|
||||||
- 使用for循环制作一个程序,程序读取一个正整数N,并输出 2^N 的值。
|
- 使用 for 循环制作一个程序,程序读取一个正整数 N,并输出 2^N 的值(提示:只需要让变量从 1 开始,每次乘 2 即可)。
|
||||||
- 使用while循环制作一个猜数字游戏,程序随机生成一个1到100之间的整数,玩家需要猜出这个数字是多少,程序会根据玩家的猜测给出相应的提示,直到玩家猜对为止。
|
- 使用 while 循环制作一个猜数字游戏,程序随机生成一个 1 到 100 之间的整数,玩家需要猜出这个数字是多少,程序会根据玩家的猜测给出猜大了或者猜小了的提示,直到玩家猜对为止。
|
||||||
- 使用for-in循环制作一个程序,该程序读取一个列表,并输出它的所有元素。
|
- 使用 for-in 循环制作一个程序,该程序读取一个列表,并输出它的所有元素。
|
||||||
|
|
Loading…
Reference in New Issue