Bash (Bourne Again Shell) 是 GNU/Linux 操作系统中的 shell 命令提示符和脚本语言。它是大多数 Linux 发行版的默认 shell。
与大多数脚本语言一样,Bash 提供循环语法来多次重复类似的任务。在本文中,我们将学习如何使用 为了
在 Bash 中循环。
介绍
典型的 Bash 脚本包含一系列要一个接一个执行的命令。变量可用于存储字符串、整数索引值、命令结果等。当用户想要多次执行特定命令时需要循环。当一个命令的输出采用列表的形式时,它特别有用,并且在每个结果上,在列表中,将运行第二个命令。
一般语法
的一般语法 为了
Bash 中的循环是:
因为在做……完成
在这里, 是一个 Bash 变量,它必须是一个有效的 Linux shell 变量名称,即名称包含字母 (az, AZ)、数字 (0-9) 和下划线 (_) 的组合,并且必须以字母或下划线。
这 是将循环的整数索引的自定义范围或整数或字符串的自定义列表。它也可以包含另一个 Linux 命令,但是,此类命令的输出必须以空格或换行符分隔,即 Bash 可解析为列表(Bash 中的列表基本上是由空格或换行符分隔的值的集合) )。
要执行的任何命令都必须放在 做..完成
堵塞。
让我们看几个简单的例子。
在一系列整数值上循环:以下代码创建名为 dir1、dir2、dir3 到 dir10 的目录。
for i in {1..10} do mkdir dir$i done
循环固定值列表: 以下代码打印给定固定列表中的每个字符串或整数。
因为我在你好 1 2 3 再见!做回声$我完成了
循环输出命令: 以下代码循环输出 ls
并以给定格式打印每个文件的名称。
for i in `ls` do echo "Filename is $i" done
基于表达式的语法
在 Bash 中也可以使用类似于 C 编程语言的基于表达式的语法:
for ((表达式 1; 表达式 2; 表达式 3)) do ... ... done
这里, 表达式 1
是索引变量的初始化。 表达式 2
是必须退出循环的条件;在每次迭代中检查此条件。 表达式 3
指定索引变量值的递增/递减/修改
以下示例仅打印 0 到 4 之间的值:
for ((i=0;i<5;i++)) do echo $i done
以下示例创建了一个无限循环,因为没有指定表达式:
for (( ; ; )) do echo "Press Ctrl-C to stop" done
中断并继续
有条件退出的 Break 语句
我们也可以使用条件语句 如果
循环内。这 如果
语句可以与 休息
语句,用于有条件地退出循环。
for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then break else echo $i;完成
上面的循环会打印从0到4的数字。然后当i的值为5时,它会跳出循环。当命令给出特定输出时要退出循环时,这特别有用。例如,以下循环在找到空文件时中断。
for file in `ls` do flen=`wc -c $file` if [[ "$flen" = "0 $file" ]] then echo "$file is empty" break else echo $flen fi done
命令 wc -c
打印文件中的行数 .它以格式打印
, 例如,
10 测试.txt
.当行数为 0 时,即一个空文件,我们将跳出循环。
有条件地跳过迭代的继续语句
与 C 和许多其他编程语言类似,bash 也有一个 继续
语句,如果满足特定条件,则跳过循环中迭代的剩余部分。
for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then continue fi echo $i;完毕
上面的循环将打印从 0 到 10 的数字,除了 5,因为在迭代过程中 我=5
有一个 continue 语句,它将在迭代开始时跳过循环中的其余代码 我=6
.
在下面的示例中,我们打印文件中的行数,并且特定的迭代将 继续
如果它是目录而不是文件。
for file in `ls` do if [[ -d $file ]] then continue fi wc -c "$file" done
[[ -d $文件]]
检查文件是否为目录。如果是,那么我们跳到下一个文件,即下一次迭代。如果它不是一个目录,我们使用打印文件中的行数 厕所
命令,如前所示。
使用循环:脚本和命令行
循环语法可以直接在 Bash shell 中使用,也可以从 shell 脚本文件中使用。一旦 为了
在 shell 上输入 loop 语法,shell 会继续提示让用户继续执行要循环的命令。
否则,用户可以将其保存在脚本文件中并执行该脚本文件。
这 #!/bin/bash
在开始指定执行文件时要使用的解释器。尽管 Bash 是当今最常用的 shell,但有些用户确实更喜欢 shell,例如 zsh
,应该在此文件的开头指定它来代替 bash。
授予执行权限 对于这个文件,运行:
chmod +x 测试.sh
最后, 执行文件, 跑:
./test.sh
结论
这 为了
Bash 中的循环是一个非常简单的功能,但几乎可以用于所有类型的复杂脚本场景。无论您是普通用户还是高级 Linux 用户,还是开始学习系统管理和 DevOps 任务的自动化,学习它都会大有帮助。