打开网易新闻 查看精彩图片

导读:在 Bash Shell 中可以查找子字符串、替换子字符串、连接字符串以及更多字符串操作。

本文字数:1864,阅读时长大约: 2分钟

在大多数编程语言中,你都会找到字符串数据类型。字符串基本上是一组字符。

但 Bash Shell 有所不同。字符串没有单独的数据类型。这里一切都是变量。

但这并不意味着你不能像在 C 和其他编程语言中那样处理字符串。

在 Bash Shell 中可以查找子字符串、替换子字符串、连接字符串以及更多字符串操作。

在 Bash 基础知识系列的这一部分中,你将学习基本的字符串操作。

在 Bash 中获取字符串长度

让我们从最简单的选项开始。也就是获取字符串的长度。这很简单:

  1. ${#string}

让我们在示例中使用它。

打开网易新闻 查看精彩图片

Example of getting string length in bash

正如你所看到的,第二个示例中有两个单词,但由于它用引号引起来,因此它被视为单个单词。连空格都算作一个字符。

在 Bash 中连接字符串

用技术术语来说是字符串 连接(concatenation),这是 Bash 中最简单的字符串操作之一。

你只需像这样一个接一个地使用字符串变量:

  1. str3=$str1$str2

还能比这更简单吗?我觉得不能。

让我们看一个例子。这是我的示例脚本,名为join.sh

  1. #!/bin/bash

  2. read -p "Enter first string: " str1

  3. read -p "Enter second string: " str2

  4. joined=$str1$str2

  5. echo "The joined string is: $joined"

以下是该脚本的运行示例:

打开网易新闻 查看精彩图片

Join two strings in bash

在 Bash 中提取子字符串

假设你有一个包含多个字符的大字符串,并且你想要提取其中的一部分。

要提取子字符串,需要指定主字符串、子字符串的起始位置和子字符串的长度,如下所示:

  1. ${string:$pos:$len}

和数组一样,字符串中的定位也是从 0 开始。

这是一个例子:

打开网易新闻 查看精彩图片

Extracting substring in bash

即使你指定的子字符串长度大于字符串长度,它也只会到达字符串末尾。

替换 Bash 中的子字符串

假设你有一个大字符串,并且你想用另一个字符串替换其中的一部分。

在这种情况下,你可以使用这种语法:

  1. ${string/substr1/substr2}

✋ 只有第一次出现的子字符串才会以这种方式替换。如果要替换所有出现的地方,请使用 ${string//substr1/substr2}

这是一个例子:

打开网易新闻 查看精彩图片

Replace substring in bash

正如你在上面看到的,“good” 一词被替换为 “best”。我将替换的字符串保存到同一字符串中以更改原始字符串。

如果未找到子字符串,则不会替换任何内容。它不会导致错误。

在 Bash 中删除子字符串

我们来谈谈删除子字符串。假设你要删除字符串的一部分。在这种情况下,只需将子字符串提供给主字符串,如下所示:

  1. ${string/substring}

✋ 通过这种方式,仅删除第一次出现的子字符串。如果要删除所有出现的内容,请使用 ${string//substr}

如果找到子字符串,则将从字符串中删除它。

让我们通过一个例子来看看。

打开网易新闻 查看精彩图片

Delete substring in bash

不用说,如果没有找到子字符串,则不会删除它。它不会导致错误。

️ 练习时间

现在是你通过简单练习来实践字符串操作的时候了。

练习 1:声明一个字符串 “I am all wet”。现在通过用 “set” 替换单词 “wet” 来更改此字符串。

练习 2:创建一个字符串,以112-123-1234格式保存电话号码。现在,你必须删除所有-

这应该会给你一些在 Bash 中使用字符串的不错的练习。在下一章中,你将学习如何在 Bash 中使用if-else语句。敬请关注。

(题图:MJ/aa73b2c9-6d2f-42e2-972d-94fab56d30cc)

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

LCTT 译者 :geekpi

翻译: 1980.5 篇

贡献: 3563 天

2013-10-25

2023-07-28

https://linux.cn/lctt/geekpi

欢迎遵照 CC-BY-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。