Bash教程

Bash For循环

Bash For 循环

在本主题中,我们将了解 for 循环 在 Bash 脚本中的用法。
像任何与其他编程语言不同,bash shell 脚本还支持"for 循环"来执行重复性任务。它帮助我们在字符串中的一系列单词或数组中的元素上迭代一组特定的语句。例如,您可以多次运行 UNIX 命令(或任务),也可以使用"for 循环"读取和处理命令列表。

For 循环的语法

我们可以通过两种方式在bash 脚本上应用'for 循环'。一种方式是'for-in',另一种方式是c 风格的语法。以下是 bash shell 脚本中"for 循环"的语法:
for variable in list
do
commands
done
for (( expression1; expression2; expression3 ))
do
commands
done
'for loop' 语句的一些关键点:
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 lidihuo."
for learn in $learn
do
echo $learn
done
echo "Thank You."
输出
Bash For Loop

For 循环读取范围

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."
输出
Bash For Loop

For 循环读取增量/减量范围

我们可以通过添加另外两个点(..) 和值来增加或减少指定的值,例如 {START. .END..INCREMENT}。查看以下示例:
递增
#!/bin/bash
#for Loop to Read a Range with Increment
for num in {1..10..1}
do
echo $num
done
输出
Bash For Loop
对于递减
#!/bin/bash
#for Loop to Read a Range with Decrement
for num in {10..0..1}
do
echo $num
done
输出
Bash For Loop

For 循环读取数组变量

我们可以使用'for循环'来迭代数组的值。
语法可以定义为:
array=(  "element1" "element 2" .  .  "elementN" )
for i in "${arr[@]}"
do
echo $i
done
输出
对于"array"中的每个元素,执行从"do"到"done"的语句或命令集。每个元素都可以在循环中作为"i"访问以进行相应的迭代。查看下面解释使用"for 循环"迭代数组元素的示例:
Bash 脚本
#!/bin/bash
#Array Declaration
arr=( "Welcome""to""lidihuo" )
for i in "${arr[@]}"
do
echo $i
done
输出
Bash For Loop

For 循环读取字符串中的空格作为单词分隔符

语法可以定义如下:
#!/bin/bash
for word in $str;
do
<Statements>
done
这里,str 指的是一个字符串。
从"do"到"done"的语句是针对字符串的每个"单词"执行的。查看以下示例:
Bash 脚本
#!/bin/bash
#for Loop to Read white spaces in String as word separators
str="Let's start
learning from lidihuo."
for i in $str;
do
echo "$i"
done
输出
Bash For Loop

For 循环将字符串中的每一行读取为一个单词

语法可以定义如下:
#!/bin/bash
for word in "$str";
do
<Statements>
done
这里,从"do"到"done"的语句对字符串的每一"行"执行。查看以下示例:
Bash 脚本
#!/bin/bash
#for Loop to Read each line in String as a word
str="Let's start
learning from 
lidihuo."
for i in "$str";
do
echo "$i"
done
输出
Bash For Loop
注意: 'For Loop to Read white space in String as word separator'和'For Loop to Read each line in String as a word'之间的唯一区别是周围的双引号字符串变量。

For 循环读取三表达式

三表达式语法是'for 循环'最常见的语法。第一个表达式指的是初始化过程,第二个表达式指的是终止,第三个表达式指的是递增或递减。
查看下面的示例,使用三个表达式打印 1 到 10 个数字带 for 循环:
Bash 脚本
#!/bin/bash
#for Loop to Read Three-expression
for ((i=1; i<=10; i++))
do
echo "$i"
done
输出
Bash For Loop

带有 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
输出
Bash For Loop

带有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 For Loop

无限 Bash For 循环

当 bash 三个表达式 for 循环中没有"开始、条件和增量"时,就变成了无限循环。要终止 Bash 中的无限循环,我们可以按 Ctrl+C。
Bash 脚本
#!/bin/bash
i=1;
for (( ; ; ))
do
sleep 1s
echo "Current Number: $((i++))"
done
输出
Bash For Loop

结论

在本主题中,我们讨论了如何在 Bash 中使用 for 循环语句来执行特定任务
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4