在 Bash 中將字串拆分為陣列

Fumbani Banda 2023年1月30日
  1. 在 Bash 中使用 read 命令將字串拆分為陣列
  2. 在 Bash 中使用 tr 命令將字串拆分為陣列
  3. 在 Bash 中使用引數擴充套件將字串拆分為陣列
在 Bash 中將字串拆分為陣列

本教程解釋了在 bash 中使用 read 命令、tr 命令和引數擴充套件將字串拆分為陣列。

在 Bash 中使用 read 命令將字串拆分為陣列

read 命令是 Linux 系統上的內建命令。

它用於將一行的內容讀入變數。它還拆分分配給 shell 變數的字串的單詞。

在下面的指令碼中,變數 $addrs 字串被傳遞給 read 命令。IFS 設定作為字串變數的單詞邊界的分隔符。

這意味著 - 在我們的例子中是單詞邊界。-a 選項告訴 read 命令將已拆分的單詞儲存到陣列中,而 -r 選項告訴 read 命令按原樣處理任何轉義字元而不解釋它們。

已拆分的單詞儲存在 ip_array 變數中。要訪問陣列中的各個元素,我們使用以下語法 ${array name[index]}

在下面的指令碼中,ip_array 是陣列名稱,而 0 是表示陣列中第一個元素的索引。

#!/usr/bin/env bash

addrs="192.168.8.1,192.168.8.2,192.168.8.3,192.168.8.4"

IFS=',' read -ra ip_array <<< "$addrs"

printf "${ip_array[0]}\n"

輸出顯示陣列中的第一個元素。

192.168.8.1

下面的指令碼新增了一個遍歷陣列的 for 迴圈,並使用 echo 命令列印所有元素。

#!/usr/bin/env bash

addrs="192.168.8.1,192.168.8.2,192.168.8.3,192.168.8.4"

IFS=',' read -r -a ip_array <<< "$addrs"

for ip in "${ip_array[@]}"
do
    echo "$ip"
done

下面的輸出顯示了陣列內的所有元素。

192.168.8.1
192.168.8.2
192.168.8.3
192.168.8.4

在 Bash 中使用 tr 命令將字串拆分為陣列

tr 命令是 translate 的縮寫形式。

它從標準輸入中翻譯、刪除和壓縮字元,並將結果寫入標準輸出。這是在命令列或 bash 指令碼中操作文字的有用命令。

可用於去除重複字元、小寫轉大寫、替換字元。

在下面的 bash 指令碼中,echo 命令將字串變數 $addrs 通過管道傳送到 tr 命令,該命令將字串變數用分隔符 ; 分開。一旦字串被拆分,這些值就會分配給 ip_addrs 陣列。

for 迴圈遍歷 $ip_addrs 陣列並使用 printf 命令列印出所有值。

#!/bin/bash

addrs="192.168.8.1,192.168.8.2,192.168.8.3,192.168.8.4"

ip_addrs=(`echo $addrs | tr ',' ' '`)

for ip in "${ip_addrs[@]}"
do
    printf "$ip\n"
done

下面的輸出顯示了陣列內的所有元素。

192.168.8.1
192.168.8.2
192.168.8.3
192.168.8.4

在 Bash 中使用引數擴充套件將字串拆分為陣列

下面的指令碼使用引數擴充套件來搜尋和替換字元。

用於引數擴充套件的語法是 ${variable//search/replace}。它在 variable 中搜尋與 search 匹配的模式,並將其替換為 replace

在我們的例子中,指令碼搜尋模式 , 並將其替換為 $addrs 字串變數中的空格。${addrs//-/ } 周圍的括號用於定義新字串的陣列,稱為 ip_array

我們使用 for 迴圈遍歷 ip_array 的所有元素並使用 echo 命令顯示它們。

#!/bin/bash

addrs="192.168.8.1,192.168.8.2,192.168.8.3,192.168.8.4"

set -f
ip_array=(${addrs//,/ })

for ip in "${!ip_array[@]}"
do
    echo "[$ip] ${ip_array[ip]}"
done

下面的輸出顯示了陣列內的所有元素。

[0] 192.168.8.1
[1] 192.168.8.2
[2] 192.168.8.3
[3] 192.168.8.4
作者: Fumbani Banda
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

相關文章 - Bash String

相關文章 - Bash Array