📜  Bash循环

📅  最后修改于: 2020-12-29 06:08:43             🧑  作者: Mango

重击循环

在本主题中,我们将了解Bash脚本中for循环的用法。

与任何其他编程语言一样,bash shell脚本也支持“ for循环”以执行重复性任务。它有助于我们在字符串的一系列单词或数组中的元素上迭代一组特定的语句。例如,您可以多次运行UNIX命令(或任务),也可以仅使用“ for循环”读取和处理命令列表。

For循环的语法

我们可以通过两种方式在bash脚本上应用“ for loop”。一种方法是“ for-in”,另一种方法是c样式语法。以下是bash shell脚本中'for loop'的语法:

for variable in list
do
commands
done

要么

for (( expression1; expression2; expression3 ))
do
commands
done

“ for循环”语句有一些关键点:

  • bash中的“ for循环”的每个块均以“ do”关键字开头,后跟该块中的命令。 “ for循环”语句由“ done”关键字关闭。
  • for循环的迭代时间取决于声明的列表变量。
  • 循环将从列表中选择一项,并在循环中使用的变量上分配值。
  • 在执行“ do”和“ done”之间的命令之后,循环返回顶部,并从列表中选择下一项,然后重复整个过程。
  • 该列表可以包含数字或字符串等,以空格分隔。

下面提供了一些“ for循环”示例,以说明它们如何工作:

基本的“ For循环”示例

Bash脚本

#!/bin/bash
#This is the basic example of 'for loop'.

learn="Start learning from Javatpoint."

for learn in $learn
do
echo $learn
done

echo "Thank You."

输出量

用于循环读取范围

Bash脚本

#!/bin/bash
#This is the basic example to print a series of numbers from 1 to 10.

for num in {1..10}
do
echo $num
done

echo "Series of numbers from 1 to 10."

输出量

For循环读取带增/减的范围

我们可以通过添加另外两个点(..)并逐步增加该值来增加或减少指定值,例如{START..END..INCREMENT}。查看以下示例:

递增

#!/bin/bash

#For Loop to Read a Range with Increment

for num in {1..10..1}
do
echo $num
done

输出量

减少

#!/bin/bash

#For Loop to Read a Range with Decrement

for num in {10..0..1}
do
echo $num
done

输出量

For循环读取数组变量

我们可以使用“ for循环”来迭代数组的值。

语法可以定义为:

array=(  "element1" "element 2" .  .  "elementN" )

for i in "${arr[@]}"
do
echo $i
done

输出量

对于“数组”中的每个元素,执行从“执行”到“完成”的语句或命令集。对于各个迭代,每个元素都可以在循环内以“ i”访问。请查看下面的示例,解释如何使用“ for循环”遍历数组的元素:

Bash脚本

#!/bin/bash

#Array Declaration
arr=( "Welcome""to""Javatpoint" )

for i in "${arr[@]}"
do
echo $i
done

输出量

用于循环读取字符串中的空白作为单词分隔符

语法可以定义如下:

#!/bin/bash

for word in $str;
do

done

在这里, str是一个字符串。

对字符串的每个“单词”执行从“ do”到“ done”的语句。查看以下示例:

Bash脚本

#!/bin/bash
#For Loop to Read white spaces in String as word separators

str="Let's start
learning from Javatpoint."

for i in $str;
do
echo "$i"
done

输出量

对于循环,以单词形式读取字符串中的每一行

语法可以定义如下:

#!/bin/bash

for word in "$str";
do

done

在这里,对字符串的每个“行”执行从“ do”到“ done”的语句。查看以下示例:

Bash脚本

#!/bin/bash
#For Loop to Read each line in String as a word

str="Let's start
learning from 
Javatpoint."

for i in "$str";
do
echo "$i"
done

输出量


注意:“ For循环将字符串中的空白作为单词分隔符读取”和“ For循环将字符串中的每一行作为单词读取”之间的唯一区别是字符串变量周围的双引号。

For循环读取三表达式

三种表达式语法是“ for循环”的最常见语法。第一个表达式指的是初始化过程,第二个表达式指的是终止,第三个表达式指的是增量或减量。

查看以下示例,使用带for循环的三个表达式print1至10个数字:

Bash脚本

#!/bin/bash
#For Loop to Read Three-expression

for ((i=1; i<=10; i++))
do
echo "$i"
done

输出量

带Break语句的For循环

可以在“ for”循环中使用“ break”语句来终止循环。

Bash脚本

#!/bin/bash
#Table of 2

for table in {2..100..2}
do
echo $table
if [ $table == 20 ]; then
break
fi
done

输出量

带Continue语句的For循环

我们可以在“ for”循环中使用“ continue”语句来跳过特定条件下的任何特定语句。它告诉Bash停止执行循环的特定迭代并处理下一个迭代。

Bash脚本

#!/bin/bash
#Numbers from 1 to 20, ignoring from 6 to 15 using continue statement"

for ((i=1; i<=20; i++));
do
if [[ $i -gt 5 && $i -lt 16 ]];
then
continue
fi
echo $i
done

输出量

无限重击循环

当bash的三个循环表达式中没有“开始,条件和增量”时,它将变为无限循环。要终止Bash中的无限循环,我们可以按Ctrl + C。

Bash脚本

#!/bin/bash

i=1;
for (( ; ; ))
do
sleep 1s
echo "Current Number: $((i++))"
done

输出量

结论

在本主题中,我们讨论了如何在Bash中使用for循环语句执行特定任务