Bash 分割字符串

17 Mar 2025 | 4 分钟阅读

在本主题中,我们定义了如何在 bash shell 脚本中分割字符串。

在某些情况下,我们可能需要分割字符串数据来执行一些特定的任务。大多数编程语言都包含内置的 'split' 函数,用于将任何字符串数据分成多个部分。然而,bash 不包含这种类型的内置函数。但是,我们可以使用分隔符在 bash 脚本中分割任何字符串数据。分隔符可以是单个字符或包含多个字符的字符串。

查看以下方法以了解如何在 bash shell 中分割字符串

使用 $IFS 变量分割

以下是使用 $IFS 在 bash 中分割字符串的步骤

  • $IFS 是一个特殊的内部变量,用于将字符串分割成单词。$IFS 变量称为“内部字段分隔符”,它决定了 Bash 如何识别边界。$IFS 用于为分割字符串分配特定的分隔符 [ IFS='']。空格是 $IFS 的默认值。但是,我们也可以使用诸如 '\t'、'\n'、'-' 等值作为分隔符。
  • 分配分隔符后,可以通过两个选项读取字符串:'-r' 和 '-a'。例如,read -ra ARR <<< "$str"
    在这里,选项 '-r' 用于定义反斜杠 (\) 是一个字符而不是转义字符。'-a' 选项用于定义单词(由 $IFS 分隔)被分配给数组的顺序索引,从零开始。
  • 然后我们应用 bash 'for' 循环来访问分割成数组的标记。

让我们借助一些例子来理解这种机制

示例 1:Bash 通过空格分割字符串

在此示例中,使用空格字符分隔符分割字符串。

Bash 脚本

输出

如果我们输入字符串 "We welcome you on Javatpoint",输出将如下所示

Bash Split String

示例 2:Bash 按符号分割字符串

在某些情况下,我们可能需要通过其他分隔符(例如符号或特定字符)来分割字符串。在此示例中,使用逗号 (,) 符号字符作为分隔符分割字符串。

Bash 脚本

输出

Bash Split String

不使用 $IFS 变量分割

在 bash 中,也可以不使用 $IFS 变量来分割字符串。带有 -d 选项的 'readarray' 命令用于分割字符串数据。-d 选项用于在命令中定义分隔符字符,如 $IFS。此外,bash 循环用于以分割形式打印字符串。

让我们借助一些例子来理解这个逻辑

示例 1:Bash 按符号分割字符串

此示例定义了如何在不使用 $IFS 的情况下分割字符串值。根据脚本,应输入带有冒号 (:) 符号的文本值,以便可以对其进行分割。查看下面的 bash 脚本

Bash 脚本

输出

Bash Split String

示例 2:Bash 按另一个字符串分割字符串

在此示例中,我们使用了惯用的表达式,其中参数扩展已完成。

Bash 脚本

在此 bash 脚本中,我们使用了以下参数扩展

  • ${parameter%%word}
    它删除最长匹配的后缀模式。
  • ${parameter#word}
    它删除最短匹配的前缀模式。

输出

Bash Split String

示例 3:使用 Trim 命令分割 Bash 字符串

在此示例中,我们使用 trim (tr) 命令来分割字符串。而不是使用 read 命令,trim 命令用于在分隔符上分割字符串。

Bash 脚本

输出

Bash Split String

注意:应该注意的是,如果我们将 trim 命令应用于分割字符串,则数组元素将按“空格分隔符”进行分割。例如,像“Windows OS”这样的元素将被视为两个不同的单词。

结论

在本主题中,我们演示了如何在 bash 脚本中分割字符串,并带有不同类型的场景,无论是否使用分隔符。


下一主题Bash 子字符串