Bash提供了许多有用的编程功能。 for loop
是其中最有用的一个。我们可以将for循环用于迭代作业。Linux系统管理员通常使用for循环来迭代文件和文件夹。在本教程中,我们将了解如何使用 for
在Linux中循环遍历文件和目录。这个例子可以用于任何使用bash作为shell的Linux发行版,比如Ubuntu、CentOS、RedHat、Fedora、Debian、Kali、Mint等 for each
一些程序设计语言,其中一个列表是迭代的。
For循环语法
Bash为 for loop
但通常使用以下语法。
for F in ITEM1 ITEM2 ...; do CODEdone
-
for
是用于在bash中创建循环的关键字 -
F
是在每个步骤中从ITEMS填充的元素或项 -
ITEM1
,ITEM2
,ITEM3
,…是我们要迭代的项,也可以是包含多个项的某个列表 - 代码是在每个循环中执行的实现部分
数字语法
最常用的 Numeric
语法。我们将以列表的形式提供数字,并对给定的列表进行迭代。列表中的每个数字都将在for循环中逐个迭代。每个项目都将分配给名为 $VAR
如下所示,这个名为$VAR的变量可以在for循环书中使用。
for VAR in 1 2 3 4 .. Ndo command1 $VAR command2 command3 ... commandNdone
在数字语法中,它非常类似于我们提供数字集合的一般语法。
相关文章: 如何循环和迭代Python字典?
给定的文件列表语法
我们将以列表的形式提供这些文件,并在每次迭代中使用它们。在这种类型中,我们将遍历如下文件列表 file1
, file2
, file3
等。
for VAR in file1 file2 file3 file3 ... filendo command1 $VAR command2 command3 ... commandNdone
命令输出语法
我们可以使用bash命令输出作为iterate的项。在这种语法中,我们希望 $(BASH_COMMAND)
将返回一个列表,我们将在其中遍历该列表。
for VAR in $(BASH_COMMAND)do command1 $VAR command2 command3 ... commandNdone
循环给定的文件名
最简单的用法 for
循环超过给定的文件名。我们将用空格分隔文件。在本例中,我们将提供文件名 a
, b
和 c
然后用字符串打印出来。
for f in "a" "b" "c"; do echo Processing $f ; done;

循环列出的文件名
如果一个目录中有成千上万个文件成为一个循环,我们该怎么办。我们需要一种更动态的方式来提供文件名。我们可以用 ls
命令以列表形式提供文件名,而无需逐个键入。
for f in $(ls); do echo Processing $f ; done;

循环指定的文件扩展名
有时我们可能需要处理特定的文件扩展名。我们可以指定要循环使用的文件扩展名 for
循环。在本例中,我们将使用 *.txt
分机。
for f in *.txt; do file $f ; done;

循环读取文本文件中的文件
文件名可以逐行存储在文本文件中。我们可以从指定的文本文件中读取文件名并在 for
循环。在本例中,我们将读取以下文本文件并循环行。我们的文件名是 filenames.txt
abcd
$ for f in $(cat filenames.txt); do echo Processing $f ; done;

C类For循环
到目前为止,我们已经学习了for循环的基本语法。还有更正式的for循环,与 C Programming
语言。我们需要提供开始条件、迭代操作和结束条件。
for ((START_CONDITION;ITERATE_OPERATION;END_CONDITION))do COMMAND1 COMMAND2 ... COMMANDNdone
在本例中,我们将使用 echo
要从中打印的命令 1
到 5
使用这个for循环语法。
#!/bin/bashfor (( c=1; c<=10; c++ ))do echo "Loop $c times"done

无限循环
在某些情况下,我们可能需要无限循环。无限循环永远不会结束,除非它的进程被终止。我们将使用类似C的for循环来创建一个无限循环。
#!/bin/bashfor (( ; ; ))do echo "This will run forever"done

带出口的条件中断
在for循环期间,如果给定条件发生,我们可能需要退出。 exit
关键字可以用来中断迭代。在本例中,我们将检查 c
可分为 6
我们将结束循环。
#!/bin/bashfor (( c=1; c<=10; c++ ))do if(($c%6 == 0)) then exit fi echo "Loop $c times"done
当变量$c等于6时,终端将关闭,其中if为真,且 exit
语句将被执行。
相关文章: 什么是Java、C/C+、PHP、Python、C#、JavaScript、Bash等编程语言的循环?
使用“继续”跳到下一步
在某些情况下,我们可能需要跳过当前的迭代,但恢复到循环。我们可以用 continue
将跳转到下一个迭代的关键字。在本例中,如果 $c
变量可以除以3。
#!/bin/bashfor (( c=1; c<=10; c++ ))do if(($c%3 == 0)) then continue fi echo "Loop $c times"done
