linux for in 字符串,Shell for in循环详解

时间:2025-02-11 07:36:11

for 循环是 Linux Shell 中最常用的结构。for 循环主要有两种常用的结构:第一种结构是列表 for 循环;第二种结构是 C 语言风格的 for 循环。

1、列表for循环结构

列表 for 循环语句用于将一组命令执行已知的次数,语句基本格式如下:

for variable in (list)

do

commands

done

do 和 done 之间的命令成为循环体,执行次数和 list 列表中常数或字符串的个数相同。

list 参数中提供了迭代中需要使用的值,当执行 for 循环时,首先将 in 后的 list 列表的第一个常数或字符串赋给循环变量,然后执行循环体;接着将 list 列表中的第二个常数或字符串赋值给循环变量,再次执行循环体。这个过程将一直持续到 list 列表中无其他常数或字符串,然后执行 done 命令后的命令序列。

注意,在 for 循环中,参数列表可以是数字,也可以是字符串,但是输入是以空格进行分隔的,如果存在空格,脚本执行时会认为存在另一个参数。

【例 1】参数列表为常数。

使用 vim 编辑器打开脚本文件 ,输入 i 命令进入插入模式,输入以下命令:

#!/bin/bash

for var in 1 2 3 4

do

echo "$var:"

done

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh

1:

2:

3:

4:

【例 2】用字符串表示列表。

使用 vim 编辑器打开脚本文件 ,输入 i 命令进入插入模式,输入以下命令:

#!/bin/bash

for day in Mon Tues Wed Thurs

do

echo "$day:"

done

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh

Mon:

Tues:

Wed:

Thurs:

2、C语言风格for循环

C 语言风格的 for 循环会定义一个在每次迭代时自动改变的变量,通常将这个变量用作计时器,并且会让计数器在每次迭代中增加或减少。Bash中的 for 循环和 C 语言中的 for 循环类似。

Bash 中 C 语言风格的 for 循环的基本格式如下:

for ((variable assignment;condition;interation process))

do

commands

done

使用类 C 风格 for 循环要注意以下事项:

如果循环条件最初的退出状态为非 0,则不会执行循环体。

当执行更新语句时,如果循环条件的退出状态永远为 0,则 for 循环将永远执行下去,从而产生死循环。

Shell 中不运行使用非整数类型的数作为循环变量。

如果循环体中的循环条件被忽略,则默认的退出状态为 0。

在类 C 风格的 for 循环中,可以将三个语句全部忽略。例如:

for((; ;))

do

echo "hello"

done

【例 3】直接输出。

使用 vim 编辑器打开脚本文件 ,输入 i 命令进入插入模式,输入如下命令:

#!/bin/bash

for (( i=1; i <= 5;i++))

do

echo "This is $i"

done

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh

This is 1

This is 2

This is 3

This is 4

This is 5

C 语言风格的 for 循环也允许使用多个变量,循环会单独处理每个变量,因此可以为每个变量定义不同的迭代过程。

【例 4】多个变量的使用。

使用 vim 编辑器打开脚本文件 ,输入 i 命令进入插入模式,输入如下命令:

#!/bin/bash

for (( a=1,b=10; a <= 10;a++,b--))

do

echo "$a-$b"

done

使用 sh(Bash)进程来执行脚本文件,输出结果为:

[root@bogon ~]# sh

1-10

2-9

3-8

4-7

5-6

6-5

7-4

8-3

9-2

10-1

注意,尽管可以使用多个变量,但只能在 for 循环中定义一种条件。