【问题标题】:Expansion of bash variable in multiple quotes?在多个引号中扩展bash变量?
【发布时间】:2016-07-15 14:18:55
【问题描述】:

我正在尝试在 bash 脚本中执行 cURL 命令以 POST 到 URI。该命令要求其中一个参数用双引号和单引号引起来必要的引号。

对于我当前不起作用的尝试,参数看起来像 '""$watcher""',因为我正在尝试扩展变量并将该字符串放在双引号和单引号内。

如何正确扩展我的变量以满足命令的要求?

【问题讨论】:

  • 至少粘贴代码的相关部分和您面临的错误
  • XY 问题:您是否尝试对字符串 jsimmons 进行 JSON 编码?
  • 如果最外层的引号是单引号,当前shell不会扩展字符串内部的变量引用。单引号字符串中没有转义字符。下一个单引号无条件地结束字符串,不管反斜杠或任何其他“转义”字符。
  • 为了给您更具体的建议,如果您向我们展示$jsimmons 的确切值是什么以及您尝试生成的命令示例,就可以了。

标签: bash variables curl expansion


【解决方案1】:

如果你的整个命令有双引号,你可以毫无困难地插入单引号,但需要转义双引号。

例如:

$ watcher=jsimmons
$ echo "'\"$watcher\"'"
'"jsimmons"'

【讨论】:

  • 我怀疑单引号实际上并没有必要,除了确保双引号按字面意思传递。
【解决方案2】:

你可以用\逃离周围的's和"s

\'\"$watcher\"\'

【讨论】:

  • 你希望\'做什么?
  • 如果它们未转义,$watcher 变量将不会被扩展,因此它将导致 \"$watcher\"。此外,\" 不会被扩展,因为“在单引号内,除 ' 之外的每个特殊字符都会按字面意思解释,”tldp.org/LDP/abs/html/quotingvar.html
猜你喜欢
  • 2012-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 2017-08-18
  • 1970-01-01
相关资源
最近更新 更多