理解“单词扩展”吗?

理解“单词扩展”吗?

我遇到了“单词扩展”这个词这里:

保留所有其他单词扩展 ( $non_exported_shell_variable, $1, $#, ${HOME+x}, $((1 + 1)),$(cmd)...)不变

我想说我知道什么是扩展变量,${HOME}但什么是“单词扩展”?

也许它是“单词分割”的替代术语(它本身就是“字段分割”的替代术语)。

更新

由于链接答案的长期存在和第一次阅读时的认知偏差(主要或只是因为缺乏对其中提到的许多概念的了解),我没有在其中内化一条注释,其中写着:

单词扩展在这方面指的是参数扩展,算术展开命令替换。这不包括文件名生成(又名通配或者路径名扩展),波形符扩展也不大括号扩展(本身不是标准sh功能)。此处使用此处文档可确保'"s 保持不变,但请注意,仍然存在反斜杠处理。

答案1

“单词扩展”(注意复数)详细定义在POSIX;他们是

  • 波形符扩展 ( ~)
  • 参数展开 ( ${})
  • 命令替换 ( $())
  • 算术展开式 ( $(()))
  • 路径名扩展

“单词扩展”是以上所有内容的应用,并按特定顺序与其他几个 shell 解析功能结合使用:

  1. 波形符扩展、参数扩展、命令替换、算术扩展
  2. 场分裂
  3. 路径名扩展
  4. 报价删除

请参阅上面链接的 POSIX 规范,它详细说明了所有这些内容。

相关内容