Awk

是“警告:形式的範圍`o-b○−bo-b’是否依賴於語言環境“gawk 4.1.0 中的錯誤?

  • January 24, 2022

在編寫一些awk程式碼時,我使用的是4.1.0的--lint選項。gawk令我驚訝的是,我收到了警告

警告:形式的範圍`

$$ o-b $$’ 取決於語言環境

但我的程式碼只有foo-bar一個字元類的外部。簡化範例:

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

另外我認為 gawk 4.2.1 不再輸出該警告,所以它是一個錯誤gawk嗎?

這是 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$/在您的情況下。這可能不適用於所有極端情況。

引用自:https://unix.stackexchange.com/questions/687696