Bash 基礎知識系列 #6:處理字元串操作
![](https://linuxstory.org/wp-content/uploads/2024/06/090030gvm6pgutlvzll4zg-800x400.jpg)
在大多數編程語言中,你都會找到字元串數據類型。字元串基本上是一組字元。
但 Bash Shell 有所不同。字元串沒有單獨的數據類型。這裡一切都是變數。
但這並不意味著你不能像在 C 和其他編程語言中那樣處理字元串。
在 Bash Shell 中可以查找子字元串、替換子字元串、連接字元串以及更多字元串操作。
在 Bash 基礎知識系列的這一部分中,你將學習基本的字元串操作。
在 Bash 中獲取字元串長度
讓我們從最簡單的選項開始。也就是獲取字元串的長度。這很簡單:
${#string}
讓我們在示例中使用它。
正如你所看到的,第二個示例中有兩個單詞,但由於它用引號引起來,因此它被視為單個單詞。連空格都算作一個字元。
在 Bash 中連接字元串
用技術術語來說是字元串 連接 ,這是 Bash 中最簡單的字元串操作之一。
你只需像這樣一個接一個地使用字元串變數:
str3=$str1$str2
還能比這更簡單嗎?我覺得不能。
讓我們看一個例子。這是我的示例腳本,名為 join.sh
:
#!/bin/bash
read -p "Enter first string: " str1
read -p "Enter second string: " str2
joined=$str1$str2
echo "The joined string is: $joined"
以下是該腳本的運行示例:
在 Bash 中提取子字元串
假設你有一個包含多個字元的大字元串,並且你想要提取其中的一部分。
要提取子字元串,需要指定主字元串、子字元串的起始位置和子字元串的長度,如下所示:
${string:$pos:$len}
? 和數組一樣,字元串中的定位也是從 0 開始。
這是一個例子:
即使你指定的子字元串長度大於字元串長度,它也只會到達字元串末尾。
替換 Bash 中的子字元串
假設你有一個大字元串,並且你想用另一個字元串替換其中的一部分。
在這種情況下,你可以使用這種語法:
${string/substr1/substr2}
✋ 只有第一次出現的子字元串才會以這種方式替換。如果要替換所有出現的地方,請使用
${string//substr1/substr2}
這是一個例子:
正如你在上面看到的,「good」 一詞被替換為 「best」。我將替換的字元串保存到同一字元串中以更改原始字元串。
? 如果未找到子字元串,則不會替換任何內容。它不會導致錯誤。
在 Bash 中刪除子字元串
我們來談談刪除子字元串。假設你要刪除字元串的一部分。在這種情況下,只需將子字元串提供給主字元串,如下所示:
${string/substring}
✋ 通過這種方式,僅刪除第一次出現的子字元串。如果要刪除所有出現的內容,請使用
${string//substr}
如果找到子字元串,則將從字元串中刪除它。
讓我們通過一個例子來看看。
不用說,如果沒有找到子字元串,則不會刪除它。它不會導致錯誤。
?️ 練習時間
現在是你通過簡單練習來實踐字元串操作的時候了。
練習 1:聲明一個字元串 「I am all wet」。現在通過用 「set」 替換單詞 「wet」 來更改此字元串。
練習 2:創建一個字元串,以 112-123-1234
格式保存電話號碼。現在,你必須刪除所有 -
。
這應該會給你一些在 Bash 中使用字元串的不錯的練習。在下一章中,你將學習如何在 Bash 中使用 if-else
語句。敬請關注。
(題圖:MJ/aa73b2c9-6d2f-42e2-972d-94fab56d30cc)
via: https://itsfoss.com/bash-strings/
作者:Abhishek Prakash 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive