从 POSIX 7 开始:
单词扩展顺序如下:
波浪号扩展(见第 2.6.1 节)、参数扩展(见第 2.6.2 节)、命令替换(见第 2.6.3 节)和算术扩展(见第 2.6.4 节)应从头到尾执行。请参阅第 2.3 节中的第 5 项。
除非 IFS 为空,否则应对步骤 1 生成的字段部分执行字段拆分(参见第 2.6.5 节)。
除非 set ?f 有效,否则应执行路径名扩展(参见第 2.6.6 节)。
报价删除(见第 2.6.7 节)应始终最后执行。
波浪号扩展、参数扩展、命令替换和算术扩展是否按指定顺序执行?
他们之间的顺序重要吗?如果是,我们如何理解为什么订单是指定的?
为什么路径名扩展发生在字段拆分之后,而其他扩展发生在字段拆分之前?
特别是,波浪号扩展和路径名扩展都与路径名和文件名有关,为什么它们在字段拆分方面的放置方式不同?
POSIX 中没有大括号扩展吗?
我注意到“单词扩展”。扩展是否仅适用于具有令牌标识符 WORD 的令牌,而不适用于具有其他令牌标识符(例如 NAME、特定运算符、NEWLINE、IO_NUMBER、ASSIGNMENT)的令牌?