迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 Bash 中将字符串拆分为数组

作者:迹忆客 最近更新:2023/03/17 浏览次数:

本篇文章解释了在 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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 CentOS 中获取 IP 地址

发布时间:2023/05/04 浏览次数:108 分类:操作系统

这篇简短的文章是对 CentOS 的一个简短介绍,然后简要讨论了我们如何使用命令行界面 (CLI) 在 CentOS 中获取服务器 IP 地址。

在 Linux 中更新 YUM

发布时间:2023/05/04 浏览次数:82 分类:操作系统

本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。

在 Linux 中安装 Deb 文件

发布时间:2023/05/04 浏览次数:130 分类:操作系统

本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。

Linux 中的 lsof 命令

发布时间:2023/05/04 浏览次数:82 分类:操作系统

在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。

Linux 中的 ps aux 命令

发布时间:2023/05/04 浏览次数:69 分类:操作系统

本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。

Linux 中的 NTP

发布时间:2023/05/04 浏览次数:137 分类:操作系统

本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。

在 Bash 中创建进度条

发布时间:2023/05/04 浏览次数:164 分类:操作系统

这是有关在 Bash 中创建进度条以显示正在运行的命令或进程的进度的指南。本文将探讨在 Bash(Linux 和 macOS 的默认 shell)中向 shell 脚本添加进度条的几种方法。使用 pv 命令在 Bash 中创建进度条

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便