如何在 Bash 中转义单引号

2023-10-19

Bash 脚本对于开发人员、系统管理员以及任何需要在 Unix 或 Linux 系统上自动执行任务的人来说是一项至关重要的技能。有时,您需要在 bash 脚本的字符串中使用单引号 (‘)。但是,由于 bash 解释单引号的方式,如果处理不当,可能会产生问题。在本文中,我们将深入研究如何在 bash 脚本中转义单引号。

了解问题

在 bash 脚本中,单引号(‘)用于保留引号内所有字符的字面值。在单引号内,每个特殊字符都以其文字形式保留,无一例外。例如:

1
echo '这是一个$变量'

该脚本的输出实际上是This is a`$变量`,而不是替换的值`$变量`.

当我们需要在已经用单引号括起来的字符串中包含单引号时,就会出现问题。例如,假设我们想打印 It's a sunny day。将此字符串括在单引号内,如下所示:

1
echo 'It's a sunny day'

将导致语法错误,因为 bash 会将第二个单引号解释为字符串的结尾。

那么我们如何在已经用单引号括起来的字符串中包含单引号呢?这就是逃避的由来。

解决方案:转义单引号

不幸的是,您无法在 bash 中对单引号字符串内的单引号进行转义,而双引号 (“) 则可以使用反斜杠 (\) 进行转义。当 bash 在单引号字符串中看到反斜杠时,它会将其视为文字反斜杠,而不是转义字符。

但是,您可以通过结束单引号字符串、添加转义单引号,然后开始新的单引号字符串来实现所需的效果。这可能看起来有点复杂,但下面的示例会澄清一些事情:

1
echo 'It'\'是一个阳光明媚的日子”

在这个例子中,‘It’是第一个单引号字符串。之后,我们有\’,这是一个转义的单引号,后跟“这是一个阳光明媚的日子”,第二个单引号字符串。当您运行此命令时,它会输出:It's a sunny day。

为了使其更具可读性,您还可以这样写:

1
echo 'It'\'是一个阳光明媚的 day

该命令还将输出:It's a sunny day。

使用变量

当您需要在存储在变量中的字符串中包含单引号时,您可能会遇到问题。例如,假设您有以下变量:

1
day='晴天'

你想打印:It's a $day。您可能会想尝试:

1
echo 'It'\'是一天”

但是,这不会按预期工作,因为变量不会在单引号内扩展。相反,您实际上会得到 It's a $day。

要解决此问题,您可以再次结束单引号字符串,对变量使用双引号(因为变量在双引号内扩展),然后开始一个新的单引号字符串。具体做法如下:

1
echo 'It'\''s a '"$day"

该命令将输出:It's a sunny day。

结论

虽然一开始看起来可能很复杂,但一旦您了解了它的工作原理,在 bash 脚本中转义单引号就非常简单了。您无法在单引号字符串中转义单引号,但可以通过结束单引号字符串、添加转义的单引号,然后开始新的单引号字符串来实现所需的效果。请记住,如果您需要在字符串中包含变量,则必须对变量部分使用双引号。

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

如何在 Bash 中转义单引号 的相关文章

  • Linux 中的 Wget 命令及示例(下载文件)

    The wgetLinux 中的命令是从互联网下载文件的强大工具 它允许您从 URL 下载文件并将其保存到本地文件系统 该命令行实用程序可用于下载单个文件 整个目录甚至整个网站 无论您需要下载文件进行备份 还是在系统之间传输大文件 wget
  • 如何从 Ubuntu Linux 中删除(删除)PPA

    如果您已经使用 Ubuntu 一段时间 您可能熟悉术语 PPA 它代表个人软件包存档 PPA 是安装和更新官方 Ubuntu 存储库中未提供的软件的好方法 但是 有时您可能想要删除 PPA 因为不再需要它或因为它导致问题 在本文中 我们将完
  • 20 个常见的 JavaScript 面试问题和答案

    JavaScript 是世界上最流行的编程语言之一 因此 这也是技术面试中最常被问到的话题之一 无论您是初学者还是经验丰富的开发人员 为 JavaScript 面试问题做好充分准备都很重要 在本文中 我们将讨论 20 个常见的 JavaSc
  • 如何在 Ubuntu 15.10、14.04 和 12.04 上安装 RabbitVCS

    兔子VCS是版本管理系统 SVN 和 Git 的图形客户端 它提供了一个简单且易于使用的图形用户界面 可以说 RabbitVCS 是 TortoiseSVN 的最佳 Linux 替代品 本教程将帮助您在 Ubuntu 15 10 14 04
  • 如何更改 Linux 内核中的 Swappiness 值

    Swappiness 是一个 Linux 内核参数 用于控制交换空闲进程和使用可用 RAM 内存之间的平衡 大多数Linux发行版中的默认交换值是60 这意味着当可用内存低于40 时系统开始交换进程 但是 此默认值可能并不适合所有情况 更改
  • Linux 中的 du 命令及有用示例

    du 是缺少磁盘使用 这意味着 du 命令计算文件在磁盘上使用的大小 它是Linux系统用户经常使用的基本Linux命令 Syntax du OPTION FILE 在本教程中 您将通过有用的示例了解 du 命令在 Linux 中的用法 d
  • 如何在 PHP 中向数组追加项目

    问题 如何在 PHP 中向数组追加项目 如何在 PHP 中将任何元素追加到现有数组的末尾 如何在 PHP 中将元素推送到数组 本教程使用数组推 函数将新元素插入或追加到数组末尾 PHP 将元素追加到数组 以下示例创建一个包含两个元素 如 b
  • 如何在 Ubuntu 18.04 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中
  • 如何在 CentOS 7 上安装 Python 3

    本教程将指导您使用 Software Collections SCL 以及发行版默认 Python 版本 2 7 在 CentOS 7 系统上安装 Python 3 我们还将向您展示如何创建 Python 虚拟环境 Python 是世界上最
  • 如何在 Debian 10 Linux 上安装 Vagrant

    Vagrant是一个用于构建和管理虚拟机环境的开源命令行工具 默认情况下 Vagrant 可以在 VirtualBox Hyper V 之上配置计算机 和码头工人 其他提供商如 Libvirt KVM VMware 和 AWS 可以通过 V
  • Linux 中的 Wget 命令及示例

    GNU Wget 是一个用于从网络下载文件的命令行实用程序 使用 Wget 您可以使用 HTTP HTTPS 和 FTP 协议下载文件 Wget 提供了许多选项 允许您下载多个文件 恢复下载 限制带宽 递归下载 后台下载 镜像网站等等 本文
  • 如何在 Ubuntu 20.04 上安装 Odoo 15

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • 如何在 Debian 10 Linux 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 使用 Node js 您可以构建可扩展的网络应用程序 npm 是 Node js
  • 如何在 Debian 9 上安装 Java

    在本教程中 我们将逐步介绍在 Debian 9 上安装 Java Java 是用于构建不同类型的应用程序和系统的最流行的编程语言之一 用 Java 开发的应用程序具有可扩展性 灵活性和可维护性 有两种不同的 Java 包 Java 运行时环
  • 如何在 Debian 9 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 类似于Node js 的 npm or Python 的点子 Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 本教程提供了在 Debian 9 系统上安装 Compos
  • 如何列出 CentOS 上已安装的软件包

    在本教程中 我们将向您展示如何列出和过滤 CentOS 上已安装的软件包 当您需要在另一台计算机上安装相同的软件包或想要重新安装系统时 了解如何列出 CentOS 系统上已安装的软件包会很有帮助 我们还将向您展示如何检查是否安装了特定的软件
  • 如何检查您的 CentOS 版本

    当您第一次登录 CentOS 计算机时 在进行任何工作之前 您可能需要检查系统上运行的 CentOS 版本 在本教程中 我们将展示几个不同的命令 了解如何检查系统上安装的 CentOS 版本 截至撰写本文时 CentOS Linux 拥有三
  • 如何在 CentOS 8 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 在虚拟机上运行 CentOS 时 不存在交换分区 因此唯
  • 配置 Magento 2 在 CentOS 7 上使用 Varnish

    页面速度或加载时间对于在线商店的成功至关重要 加载时间是加载特定页面上的内容所需的总时间 加载时间越长 转化率越低 这也是谷歌考虑确定搜索引擎排名的最重要因素之一 在第一篇文章中 我们在 CentOS 7 机器上安装了 Magento 2
  • 自动启动 wampserver 在 Windows 10 上自动启动

    在向您展示如何自动启动 wampserver 之前 我先简单介绍一下 Wampserver 是 Windows 平台上最好的 Web 开发堆栈之一 与 xampp 相比 我更喜欢它 因为它有方便的托盘菜单 可以让我访问任何配置 您可以从此网

随机推荐

  • 使用 Sed 命令删除行:Linux 文本删除教程

    Using sed命令从文件或流中删除行是常见操作 使用删除行的基本语法sed如下 sed pattern to match d filename Here pattern to match是您要在文件的每一行中匹配的模式 如果一行包含指定
  • 使用 to_sql 将 Python Pandas DataFrame 导出到 SQL

    The to sql函数允许您将存储在 DataFrame 中的记录写入 SQL 数据库 通过使用 SQLAlchemy 可以使用该库支持的任何数据库 在接下来的部分中 我们将更深入地研究此功能并探索更多功能 目录 hide 1 基本语法和
  • Python NumPy arange() 教程

    NumPyarange 函数用于生成给定区间内的值序列 您可以将其视为数字范围生成器 它允许您创建一个 NumPy 数组 其值在指定范围内均匀分布 它提供了更多功能 例如使用浮点数的能力以及显式定义数组中包含的值的间隔的灵活性 在本教程中
  • Python 切片初学者指南

    在本教程中 您将了解切片在 Python 中的工作原理以及如何使用它来操作字符串 列表和元组等序列 我们还将演示 Python 切片对象如何创建可用于对序列进行切片的切片 这些知识将为您提供一个强大的工具来访问序列中的多个项目 以删除多个项
  • Python 中非常规颜色指南

    如果您一直在使用 Python 进行编程 那么您很可能至少遇到过一个提供处理颜色表示和自定义功能的库 From 图像处理从数据可视化到Web应用程序开发 你会发现颜色的使用无处不在 事实上 大多数用于最先进计算机视觉任务的现代深度神经网络都
  • 在 Pandas 中使用 loc 和 MultiIndex DataFrame

    在之前的教程中 我们讨论了locproperty 一种基于标签的数据选择方法 但是您是否知道在使用 loc 处理多级索引时可以优化您的选择 本教程将揭示在 Pandas 中使用 loc 和 MultiIndex DataFrame 的强大功
  • Python图像处理教程(使用OpenCV)

    在本教程中 您将学习如何使用 OpenCV 库在 Python 中处理图像 OpenCV 是一个用于实时图像处理的免费开源库 它用于处理图像 视频甚至直播 但在本教程中 我们将仅将处理图像作为第一步 在开始之前 我们先安装 OpenCV 目
  • 安装和配置 Linux LDAP 服务器

    两天前 一位网站访问者在网站上搜索 LDAP 但没有找到任何结果 这促使我发一篇有关 LDAP 服务器的帖子 因此我们填补了空白 将喜爱的内容带给访问者 目录 hide 1 什么是LDAP 2 LDAP 的用途 3 LDAP 服务器实施
  • Python 海象运算符(Python 3.8 赋值表达式)

    Python 海象运算符 正式名称为赋值表达式运算符 是在 Python 3 8 中引入的 它由冒号后跟等号表示 Python 社区将其称为 海象运算符 因为它类似于海象的一双眼睛和獠牙 目录 hide 1 对海象操作员的需求 2 Walr
  • 15 个用于网络诊断的 Linux ping 命令示例

    感谢 Linux 我们可以使用许多促进网络管理和诊断的工具 从这个意义上说 Linux ping 命令是系统管理员和网络管理员最有用的工具之一 它的基本功能是确定网络中的一台主机是否可达 然而 在这篇文章中 我们将讨论 Linux Ping
  • Matplotlib 教程(使用 pyplot 绘制图形)

    Matplotlib 是 Python 中的一个库 可创建 2D 图形来可视化数据 可视化总是有助于更好地分析数据并增强用户的决策能力 在本 matplotlib 教程中 我们将绘制一些图形并更改一些属性 如字体 标签 范围等 首先 我们将
  • 如何在 Debian 11 中创建仅 SFTP 用户

    SFTP SSH 文件传输协议 是一种安全文件协议 用于通过加密的 SSH 传输会话访问 管理和传输文件 安全第一是系统管理员的经验法则 在某些情况下 我们需要允许远程用户访问我们系统上的文件系统 但您不想允许他们获得 shell 这将为您
  • 如何使用 Curl 忽略 SSL 证书检查

    在通过 SSL 或 HTTPS 连接到服务器的应用程序中使用 Curl 时 验证服务器的 SSL 证书是默认功能 这确保了通信的安全性以及服务器的身份 但是 在某些情况下 可能需要忽略或绕过 SSL 证书检查 例如在开发环境 测试或处理自签
  • 博客基础知识:成功入门指南

    在数字时代 博客已成为自我表达 教育甚至创收的有影响力的平台 无论您是渴望与世界分享您的热情的业余爱好者 希望建立在线形象的专业人士 还是计划利用博客开展业务的企业家 这本综合指南都将为您提供基础知识和其他知识 欢迎来到 博客基础知识 您成
  • Iptables:常见防火墙规则和命令

    Iptables 是一个功能强大的防火墙实用程序 用于保护 Linux 系统免受未经授权的网络流量的侵害 它是一个命令行工具 提供灵活且可定制的方式来配置和管理防火墙规则 在本文中 我们将介绍 Iptables 的基础知识 包括一些最常见的
  • 如何在 Ubuntu 20.04 上安装 Dotnet Core

    NET Core 是一个免费的开源软件框架 其设计时考虑了 Linux 和 macOS 它是 NET Framework 的跨平台继承者 适用于 Linux macOS 和 Windows 系统 NET Core 框架已经提供了用于引导项目
  • 每个周日(每周)运行一个 Cron 作业

    许多应用程序需要每周执行 cron 作业来执行一些任务 例如 执行每周维护 清理磁盘空间 清理邮件列表和其他任务 您可以在一周中的任何一天运行每周任务 需要CPU和内存的作业需要消耗CPU和内存 这些工作最好在周末进行 安排周日的 Cron
  • 如何在 CentOS/RHEL 7 上安装 NVM

    NVM代表 Node Version Manager 是一个用于管理 Node 版本的命令行实用程序 有时您需要部署具有不同 2 个版本的多个节点应用程序 管理不同 2 项目的多个 Node js 版本对于开发人员来说是一件痛苦的事情 但
  • 如何在 Fedora 29-25、CentOS 7/6 上安装 VirtualBox 来宾添加

    The 虚拟盒子Guest Additions 提供了一些设备驱动程序和应用程序 用于优化来宾操作系统的性能和可用性 它安装在来宾操作系统内 因此 您需要在系统上运行的每个虚拟机上安装 我建议安装或升级 VirtualBox最新版本优先 本
  • 如何在 Bash 中转义单引号

    Bash 脚本对于开发人员 系统管理员以及任何需要在 Unix 或 Linux 系统上自动执行任务的人来说是一项至关重要的技能 有时 您需要在 bash 脚本的字符串中使用单引号 但是 由于 bash 解释单引号的方式 如果处理不当 可能会