我需要引用命令替换吗?

2024-01-13

根据Google Shell 风格指南 https://google.github.io/styleguide/shell.xml#Quoting, 我应该:

始终引用包含变量、命令替换、空格或 shell 元字符的字符串,除非需要小心的不带引号的扩展。

也许我误解了“命令替换”的含义,但我想知道在以下示例中是否需要使用引号:

VAR="$(echo foo bar)"

$(echo foo bar)确实是命令替换。在这个特定的示例中,您不需要双引号,因为变量赋值会为其右侧创建一个“双引号上下文”,因此VAR=$(…)相当于VAR="$(…)".

在 bash 中,不需要双引号export VAR=$(…) or declare VAR=$(…)。但在其他一些 sh ​​实现(例如 dash)中,您确实需要双引号。

你确实需要双引号env VAR=$(…) somecommand, in make VAR=$(…)等等。并不是等号使双引号成为可选,而是等号被 shell 解析为赋值。

其他一些双引号是可选的上下文 https://unix.stackexchange.com/questions/68694/when-is-double-quoting-necessary/68748#68748,但是遵循简单的规则就不会出错:始终在变量和命令替换周围使用双引号 https://unix.stackexchange.com/questions/131766/why-does-my-shell-script-choke-on-whitespace-or-other-special-characters unless 你想要 split+glob 运算符 https://unix.stackexchange.com/questions/78914/quoted-vs-unquoted-string-expansion.

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

我需要引用命令替换吗? 的相关文章

随机推荐

  • 对抗锯齿文本进行 OCR

    我必须从 PDF 文档中 OCR 表格 我编写了简单的 Python opencv 脚本来获取单个单元格 之后新的问题又出现了 文本已抗锯齿且质量不佳 tesseract 的识别率很低 我尝试过使用自适应阈值来预处理图像 但结果并没有好多少
  • 比较 Excel 中的两列并排除

    I want to compare values in two columns in Excel as depicted in the image below 使用该公式 我想将值放入 B 中不存在的 A 的值 和 A 中不存在的 B 的值
  • 在 ConfigParser 解析的请求模块上使用 URL 时,InvalidSchema("未找到 {!r}".format(url)) 的 URL

    我在配置文件中有一个 URL 我使用 ConfigParser 解析该 URL 以获取请求 配置文件 default root url https reqres in api users page 2 FetchFeeds py impor
  • 如何在 Windows shell 中向文件类型添加辅助动词?

    Windows shell 编程的基本思想是 您可以将给定的文件类型 扩展名 与 MS 当前调用的 progid 例如 Company Type Ver 相关联 HKCR txt Acme Text 1 HKCR Acme Text 1 这
  • Javascript 中触摸屏事件的文档

    在哪里可以找到 Javascript 中触摸屏事件的文档或参考 例如 触摸开始 我发现这个有用的链接http ross posterous com 2008 08 19 iphone touch events in javascript h
  • PHP中将单个数字分成一组唯一的随机数

    我想从一个预先确定的单个数字开始 然后有多个随机数字 当它们相加时 它们的总数就是我开始的数字 例如 我有 100 个 但想要 10 个随机数 将它们加在一起时等于 100 以我有限的知识 我写下了这样的内容
  • Elixir 变量真的是不可变的吗?

    在 Dave Thomas 的 Programming Elixir 一书中 他指出 Elixir 强制执行不可变数据 并接着说道 在 Elixir 中 一旦变量引用了诸如 1 2 3 之类的列表 您就知道它将始终引用相同的值 直到您重新绑
  • 如何从字符串转换为 XElement 对象

    我有一个像这样的字符串
  • STL Vector默认使用“new”和“delete”进行内存分配吗?

    我正在为应用程序开发一个插件 其中内存应该由应用程序分配并跟踪它 因此 内存句柄应该以缓冲区的形式从主机应用程序获取 然后将它们返回给应用程序 现在 我计划使用 STL Vectors 我想知道它内部使用什么样的内存分配 它在内部使用 新建
  • jquery悬停事件无法正常工作

    我有一个简单的水平菜单 当我将鼠标悬停在每个项目上时 子菜单会向下滑动 所以基本上它是我们经常看到的典型导航菜单 我希望当鼠标悬停时子菜单会在鼠标移出时向下和向上滑动 我的问题是 如果我在项目中快速移动鼠标 就会有多个子菜单保持可见 我猜这
  • RSS 是否跟踪保留或提交的内存?

    我正在 java 8 上使用不同的 jvm 选项进行实验 以降低 RSS 用于 Rss 跟踪的脚本 ps o rss o vsz o pid pid 用于设置 java 进程的 JVM 参数 XX PrintNMTStatistics XX
  • Laravel 5 中用于管理或身份验证的 Laravel 中间件

    我是 Laravel 的新手 不了解 Laravel 限制机制 我读过有关中间件的内容 但很困惑如何使用它 为什么使用它以及它如何工作 所以请指导我如何实现它以达到限制目的 即对于 auth sa 用户路由 确保您在数据库用户表中有角色列或
  • Sitecore 中子布局的多变量测试

    我过去曾尝试过这个概念 现在对在我公司的 Sitecore 网站上使用多变量测试感兴趣 我认为在很多地方我们绝对可以通过使用 A B 测试来提高销量 运行两个完全不同的模板 看看哪种布局更适合用户 在网站上运行许多不同的子布局 表单 以查看
  • PHP 中的重音符号 (`)(不是单引号)代表什么?

    在下面的示例中 第二行中的重音符号是什么意思 cmd ffmpeg i video deinterlace an ss second t 00 00 01 r 1 y vcodec mjpeg f mjpeg image 2 gt 1 re
  • 将版本放入我的 java 应用程序 - Netbeans

    有什么方法可以在 netbeans 中为我的应用程序提供版本号 然后在我的代码中访问该版本号 类似于我们在 Net 中使用的程序集号 在 java 或 netbeans 中是否有类似的东西 定义一个Implementation Versio
  • 保留 Spark Streaming 输出

    我正在从消息传递应用程序收集数据 我目前正在使用 Flume 它每天发送大约 5000 万条记录 我想用卡夫卡 使用 Spark Streaming 从 Kafka 消费 并将其保存到 hadoop 并使用 impala 进行查询 我尝试过
  • Vue.js 组件渲染后是否会触发事件?

    我在 Vue js 中有一些自定义组件 在我拥有的一个组件中有一个选择列表 我想将其呈现为Chosen http harvesthq github io chosen 选择框 我将其与 jQuery 函数一起使用 select chosen
  • 如何在 Firefox 和 Opera 中缩放 HTML 元素?

    如何在 Firefox 和 Opera 中缩放 HTML 元素 The zoom该属性在 IE Google Chrome 和 Safari 中有效 但在 Firefox 和 Opera 中无效 有什么方法可以将这个属性添加到 Firefo
  • JaxB读取类层次结构

    只是延伸使用 JaxB 解析类层次结构 https stackoverflow com questions 15676401 parsing class hierarchy using jaxb问题 想要使用 JaxB 读取以下 xml 文
  • 我需要引用命令替换吗?

    根据Google Shell 风格指南 https google github io styleguide shell xml Quoting 我应该 始终引用包含变量 命令替换 空格或 shell 元字符的字符串 除非需要小心的不带引号的