为什么 POSIX 在 awk 中未指定“$(表达式)”?

为什么 POSIX 在 awk 中未指定“$(表达式)”?

回答这个问题,我发现:

echo 1 2 | awk '{print $(expression)}'

返回值表达未指定。它可能会导致混乱,就好像表达是一个未初始化的变量,应该$(expression)返回0(在数字上下文中计算)或返回空字符串""(在字符串上下文中计算)或引发错误。

从那时起,字段变量被定义为:

字段变量应由“$”后跟数字或数值表达式来指定

为什么 POSIX 保留返回值任何表达遵循$未指定?是历史原因还是其他原因?

答案1

POSIX 努力将现有实践编纂成法典,并且只在不可避免的情况下开辟新天地(是的,这对你来说是事后标准;-)。由于 Unix 代码从来都不是一致性的缩影(例如,原始 vi(1) 返回一个完全随机的退出代码,大概是为了在关键时删除可执行文件的几个字节),被数百个不同的组所采用,根据不同的议程进行修改,产生克隆(如 GNU,还有其他几个),许多内容未定义以涵盖各种随机行为。

相关内容