我遇到了“单词扩展”这个词这里:
保留所有其他单词扩展 (
$non_exported_shell_variable
,$1
,$#
,${HOME+x}
,$((1 + 1))
,$(cmd)...)
不变
我想说我知道什么是扩展变量,${HOME}
但什么是“单词扩展”?
也许它是“单词分割”的替代术语(它本身就是“字段分割”的替代术语)。
更新
由于链接答案的长期存在和第一次阅读时的认知偏差(主要或只是因为缺乏对其中提到的许多概念的了解),我没有在其中内化一条注释,其中写着:
单词扩展在这方面指的是参数扩展,算术展开和命令替换。这不包括文件名生成(又名通配或者路径名扩展),波形符扩展也不大括号扩展(本身不是标准
sh
功能)。此处使用此处文档可确保'
和"
s 保持不变,但请注意,仍然存在反斜杠处理。
答案1
“单词扩展”(注意复数)详细定义在POSIX;他们是
- 波形符扩展 (
~
) - 参数展开 (
${}
) - 命令替换 (
$()
) - 算术展开式 (
$(())
) - 路径名扩展
“单词扩展”是以上所有内容的应用,并按特定顺序与其他几个 shell 解析功能结合使用:
- 波形符扩展、参数扩展、命令替换、算术扩展
- 场分裂
- 路径名扩展
- 报价删除
请参阅上面链接的 POSIX 规范,它详细说明了所有这些内容。