如何在 Bash 脚本中使用 ${} 提取子字符串

2023-11-19

Bash (Bourne Again SHell) 是一种流行的 shell 脚本语言,尤其是在 Linux 和 Unix 世界中。 shell 脚本中最常见的任务之一是操作字符串,包括从给定字符串中提取子字符串。在本文中,我们将探讨如何使用强大的${}Bash 脚本中的语法用于剪切或提取字符串的一部分。我们还将演示各种示例,让您熟悉此技术。

1. Bash 字符串操作入门

在深入提取子字符串之前,我们先简要讨论一下 Bash 中字符串操作的基础知识。字符串只是用引号括起来的字符序列。您可以使用单引号 (‘ ‘) or 双引号 (” ”)定义一个字符串,具体取决于是否需要变量扩展。

例如,考虑以下字符串:

1
name=“约翰·多伊”

在这里,我们已经分配了字符串“约翰·多伊”到变量名。现在我们有了一个可以使用的字符串,让我们探索如何提取子字符串。

2.使用${}提取子字符串

在 Bash 中,您可以使用以下命令提取子字符串{变量:偏移量:长度}语法,其中:

  • variable是包含字符串的变量的名称
  • offset是要提取的第一个字符的位置(0-索引)
  • length是要提取的字符数(可选)

这里有些例子:

  • Extract the first name:
    1
    2
    =“${名称:0:4}”
    echo $
    
    
    Output:
    John
  • Extract the last name:
    1
    2
    =“${名称:5}”
    echo $
    
    
    Output:
    Doe

请注意,我们在第二个示例中没有指定长度,这意味着子字符串提取将继续,直到字符串末尾。

3. 使用负偏移值

您还可以使用负偏移值从字符串末尾提取子字符串。语法是{变量:-偏移量:长度},并且负号前必须包含空格。这是一个例子:

1
2
=“${名称:-3}”
echo $

Output:
Doe

4. 查找和替换子字符串

Bash 字符串操作的另一个强大功能是查找和替换子字符串的能力。您可以使用{变量/查找/替换}语法来实现这一点。这是一个例子:

1
2
3
greeting=“你好,约翰·多伊!”
新的问候语=“${问候/约翰/简}”
echo $新的问候语

Output:
Hello, Jane Doe!

结论

在本文中,我们探讨了如何使用以下方法从字符串中提取子字符串${}Bash 脚本中的语法。这个强大的功能允许您以各种方式操作字符串,包括提取、查找和替换子字符串。掌握了这些技术,您将能够在 Bash 脚本中处理各种字符串操作任务。

现在您已经掌握了使用字符串操作 ${}语法,继续应用这些知识来增强您的 shell 脚本技能!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Bash 脚本中使用 ${} 提取子字符串 的相关文章

  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • powershell stdin 管道和重定向

    你好 我一直在制作一个小的跨平台脚 本 我可以将其卷曲并通过管道传输到bash和Powershell中 基本思想是服务器向解释器发送一个命令 然后它给出一个命令将所有输出重定向到标准输出 bash 中的一个例子是 some commands
  • shell_exec 的输出被截断为 100 个字符

    当在 shell 中运行以下命令时 curl F file filename http 192 168 0 1 产生以下输出 Accuracy 0 0 1 classification Accuracy 0 0 1 classificati
  • 使用正确的头打印文件名

    我想获取当前目录中的文件名 使得文件的第一行等于myWord 我想结合find type f命令与 exec选项与head 1 filename但无济于事 有没有一些聪明的 单行的解决方案来解决这个问题 您可以使用find with awk
  • 在bash中,是否有相当于“错误消息”的东西

    在 perl 中 您可以使用错误消息退出die some msg bash 中是否有等效的单个命令 现在 我正在使用命令来实现这一点 echo some msg exit 1 你可以很容易地自己推出 die echo 1 gt 2 exit
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 在 Javascript 中获取第一个数字出现后的子字符串

    我正在尝试提取第一个数字之后 并包括 的字符 ABC 123SD gt 123SD 123 gt 123 123SD gt 123SD ABC gt 我当前的解决方案如下 var string1 ABC 123SD var firstDig
  • 如何制作一个 bash 脚本来同时创建 40 个程序实例?

    我是新来的bash and Linux 我编写了一个程序 我想创建多个同时实例 现在 我通过打开 10 个新终端 然后运行该程序 10 次 我运行的命令是php home calculatedata php 使用 bash 脚本执行此操作的
  • 字符串列表,获取n个元素的公共子串,Python

    我的问题可能类似于this https stackoverflow com questions 37514193 count the number of occurrences of n length not given string in
  • 迭代 bash 脚本中的变量名称

    我需要在一堆文件上运行一个脚本 这些文件的路径被分配给train1 train2 train20 我想 为什么不使用 bash 脚本使其自动执行呢 所以我做了类似的事情 train1 path to first file train2 pa
  • 匹配模式后添加行[重复]

    这个问题在这里已经有答案了 我有一个文件说test具有以下值 Linux Solaris Fedora Ubuntu AIX HPUX 如何在匹配 AIX 的行后面添加一行系统主机名 如果我做 echo hostname gt gt tes
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 如何判断 Bash 中是否存在文件?

    这会检查文件是否存在 bin bash FILE 1 if f FILE then echo File FILE exists else echo File FILE does not exist fi 我如何只检查文件是否存在not ex
  • 有没有办法让我简化这些回声? [复制]

    这个问题在这里已经有答案了 我仍在学习如何编写 shell 脚本 并且我面临着一个挑战 让我更容易回显 Name1 Name2 Name15 我不太确定从哪里开始 我已经想法 但如果我搞砸了 我不想看起来很傻 有什么帮助吗 我实际上还没有尝
  • jq:将对象数组转换为对象

    我收到了来自curl的回复 格式如下 list value 1 id 12 value 15 id 13 value 4 id 14 给定 id 之间的映射 如下所示 12 newId1 13 newId2 14 newId3 我想做这个
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • 使用 su 和 Expect 脚本登录用户时遇到问题

    我正在为一个班级制作一个网站 您可以使用用户名和密码登录 然后它会将您带到一个显示您在班级中的成绩的页面 该网站正在运行bash脚本 https github com jduga002 rapache 并将托管在用户已有用户名和密码登录的计
  • bash中的用户名、密码程序

    我有一个程序 要求用户输入用户名和密码 然后将其存储在文本文件中 第一列是用户名 第二列是密码 我需要一个命令 在用户输入用户名和新密码时替换密码 如下我拥有的 bin bash admin menu Register User echo

随机推荐

  • docker搭建文档管理服务器,Docker快速搭建LDAP服务器

    摘要 OpenLdap可以提供强大的集中账号管理和授权 但其强大的功能依赖多个插件的集成 为方便OpenLdap的编译和部署 我便制作了一个docker 镜像 并通过本文记录该镜像的使用方法 文档环境 本文档中代码的测试环境 OpenLda
  • 如何在 CentOS/RHEL 8 上安装 Python 3.9

    Python 是一种功能强大且广泛使用的编程语言 以其简单性 可读性和跨 Web 开发 数据科学和机器学习等各个领域的多功能性而闻名 随着 Python 3 9 的发布 开发人员可以从众多增强 优化和新功能中受益 在本教程中 我们将指导您完
  • 每个开发人员都应该了解的 15 种高级 JavaScript 技术

    JavaScript 是一种多功能且功能强大的编程语言 已广泛用于 Web 应用程序的开发 作为开发人员 必须充分了解该语言的功能和先进技术 才能创建健壮 高效且可扩展的 Web 应用程序 以下是每个开发人员都应该了解的 15 种高级 Ja
  • 如何列出 MongoDB 数据库中的所有集合

    问题 如何列出 MongoDB 数据库中所有可用的集合 MongoDB 是一个 NoSQL 数据库 以 JSON 格式存储文档 集合是 MongoDB 中存储 JSON 文档的实体 即类似于 RDBMS 数据库中的表 您可以使用以下选项之一
  • 如何使用 Yum 在 CentOS 和 RHEL 上安装 phpPgAdmin

    phpPgAdmin is web based client written in php for accessing and managing PostgreSQL databases It provides very efficient
  • 如何在 Linux 中提取 tar.gz 文件

    Linux 是一个功能强大且灵活的操作系统 因其稳健性和多功能性而备受赞誉 它广泛应用于服务器 嵌入式系统和个人计算机等领域 然而 对于新用户 甚至对于一些有经验的用户来说 某些任务可能看起来令人畏惧 其中一项任务是文件压缩和提取 尤其是在
  • JavaScript every() 方法:提示、技巧和用例

    JavaScript 巩固了其作为世界上最流行和最广泛使用的编程语言之一的地位 这是有充分理由的 它的动态特性和多功能性使其成为 Web 开发 从客户端交互到服务器端编程 的首选 提高其效率的一个重要因素是内置方法的多样性 其中一种有用的方
  • Vim 入门:初学者指南

    Vim 是一种功能强大且广泛使用的文本编辑器 为用户提供了许多用于编辑和操作文本的高级功能 然而 如果您是 Vim 新手 那么上手可能会有点困难 在本文中 我们将提供 Vim 初学者指南 涵盖从基本导航到高级编辑技术的所有内容 读完本指南后
  • 如何在 Linux 中安全自动删除临时文件

    Linux 系统与任何其他操作系统一样 都会生成会随着时间累积的临时文件 虽然这些文件可用于多种目的 但它们会占用宝贵的存储空间 甚至会降低系统速度 因此 定期删除这些文件对于获得最佳系统性能至关重要 在本指南中 我们将探索安全 自动删除临
  • 使用 Linux 防火墙将端口转发到 Docker 容器

    在当今的容器化世界中 Docker 已成为部署和管理应用程序的流行解决方案 一种常见的用例是将网络流量从主机上的特定端口转发到 Docker 容器内的端口 当您想要将容器内运行的服务公开给外界或需要设置反向代理以进行负载平衡时 这尤其有用
  • 如何在 PHP 中删除特定数组元素

    问 如何使用 PHP 从数组中删除特定元素 在本教程中 您将学习两个 PHP unset 和 array splice 方法来删 除特定的数组元素 使用 PHP unset 函数 使用PHPunset 函数从数组中删除一个元素 基本上它用于
  • 在 Linux 中删除文件的最后 N 行

    在本文中 我们将讨论在 Linux 中删除文件最后 N 行的多种方法 为此 我们将使用各种 Linux 实用程序 例如 sed awk 和 head 在我们继续之前 重要的是要提到 如果操作不当 直接在 Linux 系统上操作文件可能会造成
  • 用于富 Web 开发的 13 个免费 JavaScript 库和插件

    在这个新的一天伴随着最新技术崛起的舞台上 让您的商业品牌绽放光芒的唯一方法就是紧跟市场流行的趋势 使用 HTML 和 JavaScript 等技术是通过其中使用的一流功能获得盈利业务的灵魂 当从技术角度谈论 JavaScript 时 考虑到
  • 如何在不终止 Linux 上正在运行的进程的情况下关闭终端

    例如 您正在运行耗时的进程 并且您不希望该作业由于终端关闭而被终止 要处理这种情况 您只需从活动作业表中删除作业即可 这样当终端关闭时作业就不会被杀死 指示 按照以下说明从终端分离正在运行的作业 1 Press CTRL Z to susp
  • 如何允许远程访问 Tomcat 管理器

    Apache Tomcat 是一种广泛使用的开源 Java Servlet 容器 允许您托管和管理基于 Java 的 Web 应用程序 Tomcat Manager 是一个基于 Web 的界面 提供用于管理已部署应用程序的管理工具 默认情况
  • DUF – 适用于 Linux、BSD 和 macOS 的跨平台磁盘使用/免费实用程序

    随着数据的指数级增长 管理存储和分析磁盘使用情况已成为系统管理员和日常计算机用户的一项基本任务 了解磁盘空间的利用方式有助于您优化系统并就存储分配做出明智的决策 DUF 即磁盘使用 空闲实用程序 是一款功能强大的跨平台工具 旨在帮助您做到这
  • 如何在 Shell 脚本中检查 Python 版本

    Python 是由 Guido van Rossum 创建的一种高级通用编程语言 它于 1991 年首次发布 通常 基于 Linux 的发行版都预装了 Python 版本 本教程将帮助您在脚本中查找 Python 版本详细信息 此外 您还可
  • 如何在 Debian 11 上安装和配置 Fail2ban

    每台可通过互联网访问的服务器都面临着遭受暴力破解和恶意软件攻击的巨大风险 黑客尝试使用暴力尝试来访问可在公共网络上访问的应用程序 Fail2ban 是一种工具 用于通过提高基于 Linux 的计算机的安全性来保护其免受自动攻击 它监控任何恶
  • 使用 MySQL 中的预准备语句防止 SQL 注入攻击

    SQL 注入攻击是当今 Web 应用程序面临的最常见的安全威胁之一 当恶意行为者使用特制的输入来操纵数据库查询并获得对敏感数据的未经授权的访问时 就会发生这些攻击 为了防止 SQL 注入攻击 开发人员可以在 MySQL 中使用准备好的语句
  • 如何在 Bash 脚本中使用 ${} 提取子字符串

    Bash Bourne Again SHell 是一种流行的 shell 脚本语言 尤其是在 Linux 和 Unix 世界中 shell 脚本中最常见的任务之一是操作字符串 包括从给定字符串中提取子字符串 在本文中 我们将探讨如何使用强大