“警告:‘[ob]’形式的范围取决于区域设置”是 gawk 4.1.0 中的错误吗?

“警告:‘[ob]’形式的范围取决于区域设置”是 gawk 4.1.0 中的错误吗?

在编写一些awk代码时,我使用了4.1.0--lint的选项gawk。令我惊讶的是我收到了警告

警告:“[ob]”形式的范围取决于区域设置

但我的代码只有foo-bar字符类的外部。简化示例:

{ match($2, /^uid=([^,]+),dc=foo-bar$/, m) }

另外我认为 gawk 4.2.1 不再输出该警告,那么这是一个错误gawk吗?

答案1

这是 Gawk 4.1.0 中的一个错误。它是由a7c502a756732ec9a1773d6169376bb7b25f4308并由固定d52d17b46e53bb0d4a991cd32f859eb349d3b101。该错误在 4.1.0 中首次发布,修复程序在 4.1.1 中首次发布。

这只是 linter 中的错误,而不是用于实际将文本与正则表达式匹配的代码中的错误。

该错误导致 linter 在查找集合中的范围时继续查看结束括号,因此当它看到 时[set]more stuff with a-dash,它会到达后续位置-并发出警告。一种解决方法(如果您确实需要针对旧版本中仅 linter 错误的解决方法)是将破折号本身放在一个范围内:/^uid=([^,]+),dc=foo[-]bar$/在您的情况下。这可能不适用于所有极端情况。

相关内容