使用解释说明的示例进行10个Bash For循环 Bash For循环是一种在Bash脚本中重复执行特定命令或操作的方法。以下是10个使用解释说明的Bash For循环示例。 1. 使用数字范围进行循环: “`bash for num in {1..5} do echo “Number: $num” done “` 这个循环将输出数字1到5。 2. 使用命令的输出进行循环: “`bash for file in $(ls) do echo “File: $file” done “` 这个循环将遍历当前目录中的所有文件,并输出每个文件的名称。 3. 使用数组进行循环: “`bash fruits=(“apple” “banana” “orange”) for fruit in “${fruits[@]}” do echo “Fruit: $fruit” done “` 这个循环将遍历数组中的每个元素,并输出每个水果的名称。 4. 使用通配符进行循环: “`bash for file in *.txt do echo “Text file: $file” done “` 这个循环将遍历当前目录中的所有.txt文件,并输出每个文件的名称。 5. 循环计数器: “`bash for ((i=0; i<5; i++)) do echo "Counter: $i" done “` 这个循环将输出0到4的计数器值。 6. 嵌套循环: “`bash for ((i=1; i<=3; i++)) do for ((j=1; j<=3; j++)) do echo "Outer loop: $i, Inner loop: $j" done done “` 这个循环将输出外部循环和内部循环的组合。 7. 循环读取文件内容: “`bash while IFS= read -r line do echo "Line: $line" done < file.txt “` 这个循环将逐行读取file.txt文件的内容,并输出每一行的内容。 8. 循环处理命令行参数: “`bash for arg in "$@" do echo "Argument: $arg" done “` 这个循环将遍历命令行中提供的所有参数,并输出每个参数的值。 9. 跳过循环的一次迭代: “`bash for num in {1..5} do if [ $num -eq 3 ] then continue fi echo "Number: $num" done “` 这个循环将跳过数字3,并输出其他数字。 10. 提前终止循环: “`bash for num in {1..5} do if [ $num -eq 4 ] then break fi echo "Number: $num" done “` 这个循环将在数字4之前终止,并输出其他数字。 这些示例说明了使用解释说明的Bash For循环的不同用法和功能。您可以根据自己的需求和脚本来调整和应用这些示例。
循环是任何编程语言的重要部分。它允许程序遍历一定数量的项。
例如,如果您想要遍历一个包含'n'个项的列表或数组,您将使用一个循环。让我们来看一个简单的例子:
1 | 紫罗兰色 |
2 | 靛蓝色 |
3 | 蓝色 |
4 | 绿色 |
为了执行上述表格中的任何操作或遍历项,我们需要一个循环。
Bash循环
在bash脚本中,循环的语法如下:
#!/bin/bash
for VAR in 1 2 3 4 5.....N
do
ACTION 1
ACTION 2
.....
done
Bash循环非常简单。第一行#!/bin/bash
表示该代码是bash脚本。VAR代表用于循环的临时变量。N表示最大迭代次数。‘do’和‘done’分别开始和结束循环。动作是在循环内执行的命令。
我们可以使用不同的变量(如列表、字符串、整数和数组)来执行Bash循环。本文将展示一些Bash循环的常见示例。
您可以直接在bash命令行上执行这些程序,或者将它们保存在一个文件中,并使用Bash filename.sh命令执行该文件。
读取静态列表
考虑以下列表-rainbowColorList = 紫罗兰色,靛蓝色,蓝色,绿色,黄色,橙色,红色
我们可以使用Bash循环将上述字符串列表打印如下:
#! /bin/sh
# Define the list
rainbowColorList=紫罗兰色,靛蓝色,蓝色,绿色,黄色,橙色,红色
# Comma separator pattern using //,/
for colors in ${rainbowColorList//,/ }
do
echo $colors
done
输出将是一个新行中的项目列表。
#Output
紫罗兰色
靛蓝色
蓝色
绿色
黄色
橙色
红色
读取数组
声明数组的语法是不同的。对于每个元素(字符串),使用括号。
rainbowArray=("紫罗兰色" "靛蓝色" "蓝色" "绿色" "黄色" "橙色" "红色")
for colors in "${rainbowArray[@]}"; do
echo "我喜欢 $colors"
done
‘@’用于循环遍历数组中的每个元素。
#Output
我喜欢紫罗兰色
我喜欢靛蓝色
我喜欢蓝色
我喜欢绿色
我喜欢黄色
我喜欢橙色
我喜欢红色
我们还可以使用循环来打印索引和数组元素。
#Printing with index
rainbowArray=("紫罗兰色" "靛蓝色" "蓝色" "绿色" "黄色" "橙色" "红色")
for i in "${!rainbowArray[@]}";
do
echo "索引处的颜色" $i " : " "${rainbowArray[$i]}"
i=$((i+1));
done
#Output
索引处的颜色 0 : 紫罗兰色
索引处的颜色 1 : 靛蓝色
索引处的颜色 2 : 蓝色
索引处的颜色 3 : 绿色
索引处的颜色 4 : 黄色
索引处的颜色 5 : 橙色
索引处的颜色 6 : 红色
请注意,我们在循环中使用‘!’来获取元素索引。
迭代数值范围
我们可以使用Bash循环来迭代一系列数字。
#iterating over range of numbers
echo "倒计时开始..."
for N in {10..0}
do
echo "$N"
done
‘..’表示一系列数字。
#Output
10
9
8
7
6
5
4
3
2
1
0
我们还可以通过指定范围来跳过计数数字。
在下面的例子中,我们以3进行跳数计数。
#iterating with skip counting
echo "倒计时开始..."
for N in {30..0..3}
do
echo "$N"
done
上面的程序以30作为第一个数字开始,倒数到0。for循环中的最后一个参数'3'指定了跳过计数。
#输出
30
27
24
21
18
15
12
9
6
3
0
字符串和字符
我们可以使用Bash For循环进行许多有趣的字符串操作。
例如,我们可以使用For循环中的'seq'运算符读取字符串的每个字符:
#读取字符串的字符
myword="welcome"
for i in $(seq 1 ${#myword})
do
echo "${myword:i-1:1}"
done
注意,'seq'应该从1开始以获取第一个字符。
#输出
W
e
l
c
o
m
e
我们还可以逐个打印以空格分隔的字符串:
#从句子中读取每个单词
mysentence="Welcome to GeekFlare. One stop hub for all techies"
for word in $mysentence; do
echo $word
done
#输出
Welcome
to
GeekFlare.
One
stop
hub
for
all
techies
表达式
类似于Java等其他编程语言,我们可以在Bash For循环中放置表达式。
for (( var=10; var>=0; var-- ))
do
echo "Counting down...$var"
done
#输出
Counting down...10
Counting down...9
Counting down...8
Counting down...7
Counting down...6
Counting down...5
Counting down...4
Counting down...3
Counting down...2
Counting down...1
Counting down...0
读取命令行参数
要从命令行参数中读取,我们使用'read'命令。在下面的示例中,我们将从用户获取一些数字,并使用Bash For循环打印它们的总和。我们使用变量total来存储中间和最终的总数或数字的总和。
read -a array -p "Enter the numbers you want to add:"
total=0
for i in ${array[@]}; do
let total+=$i
done
echo "Sum of the numbers is: $total"
输出如下:
#输出
Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73
查找奇偶数
要查找1到10(或任何数字N)之间的奇数和偶数,我们应该在Bash for循环中使用if条件。要确定一个偶数,我们将数字除以2,如果余数为0,则将其归类为偶数,否则为奇数。
#声明保存偶数和奇数的列表
evennum=""
oddnum=""
for (( i=1; i<=10; i++ ))
do
remainder=$(( $i % 2 ))
if [ $remainder -eq 0 ]; then
evennum="$evennum $i "
else
oddnum="$oddnum $i "
fi
done
echo "Even numbers are: "$evennum
echo "Odd numbers are: "$oddnum
请注意,我们在上面的示例中给出了范围为10。我们可以更改此数字以获取任何范围内的偶数和奇数。您还可以尝试使用我们在上一节中学到的'read'命令从用户读取数字。
#输出
Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9
无限循环
无限循环是指不停止执行的循环,必须使用Ctrl+C强制程序停止。我们可以使用for循环中的'; ;'运算符轻松创建一个无限循环:
for (( ; ; ))
do
echo "Welcome to Geekflare"
done
#输出
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
^C
$
Break语句
当满足'if'条件时,使用break语句从循环中跳出。
在这个例子中,我们试图找到绿色。For循环遍历每种颜色,一旦找到绿色,由于break语句的存在,程序将跳出循环。
输出如下:
正在查找绿色,当前颜色为Violet
正在查找绿色,当前颜色为Indigo
正在查找绿色,当前颜色为Blue
我找到了我的颜色Green
Continue语句用于跳过当前循环并基于某个条件跳转到下一个循环。例如,如果不想从上一个程序中打印出颜色“Green”,可以使用continue,除了Green之外的所有其他颜色都会显示出来。
输出如下:
Violet
Indigo
Blue
Yellow
Orange
Red
我们已经介绍了Bash For循环的最常见用法,包括使用字符串、整数、数组和列表。如果你正在学习Linux,但有一台Windows 10机器,你可以使用WSL功能,在Windows机器上安装Linux。
然后,您可以类似CMD一样使用Linux终端。