mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Merge pull request #29798 from wxy/20230717.0-⭐️⭐️-Bash-Basics-Series-6-Handling-String-Operations
RP:published/20230717.0 ⭐️⭐️ Bash Basics Series 6 Handling String Operations.md
This commit is contained in:
commit
8fb383a384
@ -3,24 +3,26 @@
|
|||||||
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
||||||
[#]: collector: "lkxed"
|
[#]: collector: "lkxed"
|
||||||
[#]: translator: "geekpi"
|
[#]: translator: "geekpi"
|
||||||
[#]: reviewer: " "
|
[#]: reviewer: "wxy"
|
||||||
[#]: publisher: " "
|
[#]: publisher: "wxy"
|
||||||
[#]: url: " "
|
[#]: url: "https://linux.cn/article-16047-1.html"
|
||||||
|
|
||||||
Bash 基础知识系列 #6:处理字符串操作
|
Bash 基础知识系列 #6:处理字符串操作
|
||||||
======
|
======
|
||||||
|
|
||||||
|
![][0]
|
||||||
|
|
||||||
在大多数编程语言中,你都会找到字符串数据类型。字符串基本上是一组字符。
|
在大多数编程语言中,你都会找到字符串数据类型。字符串基本上是一组字符。
|
||||||
|
|
||||||
但 Bash shell 有所不同。字符串没有单独的数据类型。这里一切都是变量。
|
但 Bash shell 有所不同。字符串没有单独的数据类型。这里一切都是变量。
|
||||||
|
|
||||||
但这并不意味着你不能像在 C 和其他编程语言中那样处理字符串。
|
但这并不意味着你不能像在 C 和其他编程语言中那样处理字符串。
|
||||||
|
|
||||||
在 Bash shell 中可以查找子字符串、替换子字符串、连接字符串以及更多字符串操作。
|
在 Bash Shell 中可以查找子字符串、替换子字符串、连接字符串以及更多字符串操作。
|
||||||
|
|
||||||
在 Bash 基础知识系列的这一部分中,你将学习基本的字符串操作。
|
在 Bash 基础知识系列的这一部分中,你将学习基本的字符串操作。
|
||||||
|
|
||||||
### 在 bash 中获取字符串长度
|
### 在 Bash 中获取字符串长度
|
||||||
|
|
||||||
让我们从最简单的选项开始。也就是获取字符串的长度。这很简单:
|
让我们从最简单的选项开始。也就是获取字符串的长度。这很简单:
|
||||||
|
|
||||||
@ -34,9 +36,9 @@ ${#string}
|
|||||||
|
|
||||||
正如你所看到的,第二个示例中有两个单词,但由于它用引号引起来,因此它被视为单个单词。连空格都算作一个字符。
|
正如你所看到的,第二个示例中有两个单词,但由于它用引号引起来,因此它被视为单个单词。连空格都算作一个字符。
|
||||||
|
|
||||||
### 在 bash 中连接字符串
|
### 在 Bash 中连接字符串
|
||||||
]
|
|
||||||
技术术语是字符串连接,这是 bash 中最简单的字符串操作之一。
|
用技术术语来说是字符串 <ruby>连接<rt>concatenation</rt></ruby>,这是 Bash 中最简单的字符串操作之一。
|
||||||
|
|
||||||
你只需像这样一个接一个地使用字符串变量:
|
你只需像这样一个接一个地使用字符串变量:
|
||||||
|
|
||||||
@ -44,7 +46,7 @@ ${#string}
|
|||||||
str3=$str1$str2
|
str3=$str1$str2
|
||||||
```
|
```
|
||||||
|
|
||||||
还能比这更简单吗? 我不这么认为。
|
还能比这更简单吗?我觉得不能。
|
||||||
|
|
||||||
让我们看一个例子。这是我的示例脚本,名为 `join.sh`:
|
让我们看一个例子。这是我的示例脚本,名为 `join.sh`:
|
||||||
|
|
||||||
@ -63,7 +65,7 @@ echo "The joined string is: $joined"
|
|||||||
|
|
||||||
![Join two strings in bash][2]
|
![Join two strings in bash][2]
|
||||||
|
|
||||||
### 在 bash 中提取子字符串
|
### 在 Bash 中提取子字符串
|
||||||
|
|
||||||
假设你有一个包含多个字符的大字符串,并且你想要提取其中的一部分。
|
假设你有一个包含多个字符的大字符串,并且你想要提取其中的一部分。
|
||||||
|
|
||||||
@ -81,7 +83,7 @@ ${string:$pos:$len}
|
|||||||
|
|
||||||
即使你指定的子字符串长度大于字符串长度,它也只会到达字符串末尾。
|
即使你指定的子字符串长度大于字符串长度,它也只会到达字符串末尾。
|
||||||
|
|
||||||
### 替换 bash 中的子字符串
|
### 替换 Bash 中的子字符串
|
||||||
|
|
||||||
假设你有一个大字符串,并且你想用另一个字符串替换其中的一部分。
|
假设你有一个大字符串,并且你想用另一个字符串替换其中的一部分。
|
||||||
|
|
||||||
@ -101,7 +103,7 @@ ${string/substr1/substr2}
|
|||||||
|
|
||||||
> 💡 如果未找到子字符串,则不会替换任何内容。它不会导致错误。
|
> 💡 如果未找到子字符串,则不会替换任何内容。它不会导致错误。
|
||||||
|
|
||||||
### 在 bash 中删除子字符串
|
### 在 Bash 中删除子字符串
|
||||||
|
|
||||||
我们来谈谈删除子字符串。假设你要删除字符串的一部分。在这种情况下,只需将子字符串提供给主字符串,如下所示:
|
我们来谈谈删除子字符串。假设你要删除字符串的一部分。在这种情况下,只需将子字符串提供给主字符串,如下所示:
|
||||||
|
|
||||||
@ -123,11 +125,13 @@ ${string/substring}
|
|||||||
|
|
||||||
现在是你通过简单练习来实践字符串操作的时候了。
|
现在是你通过简单练习来实践字符串操作的时候了。
|
||||||
|
|
||||||
**练习 1**:声明一个字符串 “I am all wet”。现在通过用 set 替换单词 wet 来更改此字符串。
|
**练习 1**:声明一个字符串 “I am all wet”。现在通过用 “set” 替换单词 “wet” 来更改此字符串。
|
||||||
|
|
||||||
**练习 2**:创建一个字符串,以 `112-123-1234` 格式保存电话号码。现在,你必须删除所有 `-`。
|
**练习 2**:创建一个字符串,以 `112-123-1234` 格式保存电话号码。现在,你必须删除所有 `-`。
|
||||||
|
|
||||||
这应该会给你一些在 bash 中使用字符串的不错的练习。在下一章中,你将学习如何在 bash 中使用 if-else 语句。敬请关注。
|
这应该会给你一些在 Bash 中使用字符串的不错的练习。在下一章中,你将学习如何在 Bash 中使用 `if-else` 语句。敬请关注。
|
||||||
|
|
||||||
|
*(题图:MJ/aa73b2c9-6d2f-42e2-972d-94fab56d30cc)*
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -136,7 +140,7 @@ via: https://itsfoss.com/bash-strings/
|
|||||||
作者:[Abhishek Prakash][a]
|
作者:[Abhishek Prakash][a]
|
||||||
选题:[lkxed][b]
|
选题:[lkxed][b]
|
||||||
译者:[geekpi](https://github.com/geekpi)
|
译者:[geekpi](https://github.com/geekpi)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
@ -147,3 +151,4 @@ via: https://itsfoss.com/bash-strings/
|
|||||||
[3]: https://itsfoss.com/content/images/2023/07/extract-substring-bash.png
|
[3]: https://itsfoss.com/content/images/2023/07/extract-substring-bash.png
|
||||||
[4]: https://itsfoss.com/content/images/2023/07/replace-substring-bash.png
|
[4]: https://itsfoss.com/content/images/2023/07/replace-substring-bash.png
|
||||||
[5]: https://itsfoss.com/content/images/2023/07/bash-delete-substring.png
|
[5]: https://itsfoss.com/content/images/2023/07/bash-delete-substring.png
|
||||||
|
[0]: https://img.linux.net.cn/data/attachment/album/202307/30/090030gvm6pgutlvzll4zg.jpg
|
Loading…
Reference in New Issue
Block a user