bash for循环

时间:2020-02-23 14:37:41  来源:igfitidea点击:

Bash for 循环命令

Bash编程中的用于循环分为两种不同的语法:

  • for in循环
for item in (list)
do
command_one
command_two
...
done

在上面的循环语法中,有四个关键字,for,in,do和done。
该列表指的是"列表"中的值。
项目是一个变量名,它是Bash编程语言中的关键字。

当我们运行程序时,它将根据"列表"中的项目数执行命令。
因此,如果列表包含五个数字,则(1 2 3 4 5),命令执行五次。

在每个迭代中,列表中的值存储在项目变量中并在程序主体中使用。

  • 具有类似于C编程语言的语法的循环
for (( expression_1; expression_2; expression_3))
do
command_one
command_two
...
done

使用上面的循环声明,如果我们是C,C ++或者Java Developer,则应熟悉语法。
'Expression_1代表初始化,Expression_2代表条件,Expression_3代表更新。

当我们运行程序时,在执行第一次迭代之前评估"Expression_1"初始化用于循环的变量值。

执行程序主体,直到Expression_2为真。
这里的程序机构指的是DO和DONE关键字之间的命令。
现在,在程序的每一次迭代之后,评估表达式_3.

用于循环打印一系列字符串

我们可以使用for in循环来打印一系列字符串。
看看下面的代码。
我们已经在我们的工作目录中使用了该程序中使用的三个文件。
这是'testfile1','testfile2'和'testfile3'。

#!/bin/bash
for item in testFile1 testFile2 testFile3
do
cat $item
echo "Done with file $item"
echo 
done

"for in"与数组元素备份文件

我们可以使用for in循环来迭代数组中的元素。
看看下面的代码。

#!/bin/bash
Files=('testFile1' 'testFile2' 'testFile3')
for item in "${Files[@]}"; 
do
cp $item{,.bak}
echo "Created a backup of $item"
done

'for'带距离

我们可以在一系列数字中迭代。
例如,我们希望在数字1 100之间迭代。
编写程序中的所有这些数字将使代码相当多。
我们可以通过使用范围来解决这个问题。
看看下面的代码。

#!/bin/bash
for i in {0..50}
do
echo "COUNT: $i"
done

假设我们希望在打印输出之前创建跳过一定数量的数字的范围。
然后我们需要在范围语法中包含第三个参数。
请参阅下面的代码。

#!/bin/bash
for i in {0..100..10}
do
echo "COUNT: $i"
done

具有C编程语法for循环

让我们看一下循环语法。
它包含初始化表达式,初始化循环,确定程序执行程序的条件表达式,以及更新变量值的增量表达式。

看看下面的代码。

#!/bin/bash
for (( i=5; i>=1; i-- ))
do 
echo "COUNT: $i"
done

创建无限循环

要在Bash中创建无限循环,我们将使用C编程语法。
请参阅下面的代码。

#!/bin/bash
for (( ; ; ))
do
echo "Use Ctrl+C to terminate the loop."
echo "Starting Infinite Loop..."
done

中断循环或继续循环

Break语句终止程序并退出循环。
另一方面,continue强制下次迭代程序进行。

  • break

让我们来看看下面的程序,这利用了Break语句。

#!/bin/bash
for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux
do
if [[ "$distro" == 'kali' ]]; then
break
fi
echo "Linux_distribution: $distro"
done

continue

与Break语句不同,Continue语句终止了该部分的程序,但迫使程序的下一次迭代运行。

看看下面的代码。

#!/bin/bash
for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux
do
if [[ "$distro" == 'Kali' ]]; then
continue
fi
echo "Linux_distribution: $distro"
done