点不是变量名称中的有效字符。bash 手册说(这里)
\n\n\n\n\n姓名
\n\n\n\n仅由字母、数字和下划线组成且以字母或下划线开头的单词。名称用作 shell 变量和函数名称。也称为标识符。
\n
但是,我的 ksh93 手册页显示:
\n\n\n\n\n定义。
\n\n\n\n[...] 标识符是字母、数字或下划线的序列,以字母或下划线开头\xe2\x80\x90\n。标识符用作变量名称的组成部分。vname 是一个或多个标识符的序列,由 . 并可选地在前面加上 .. Vname 用作函数和变量名称。
\n
这部分似乎与您的问题最相关(强调我的问题):
\n\n\n\n\n参数扩展。
\n\n\n\n[...]\n 变量由 vname 表示。 要创建一个 vname 包含 . 的变量,该变量的 vname 包含最后一个 . 之前的所有内容。必须已经存在。
\n
此功能仅存在于 ksh93 中,bash 中不存在。如果您的脚本使用它,您需要在 ksh93 下运行它。
\n