Awk
是“警告:形式的範圍`o-b○−bo-b’是否依賴於語言環境“gawk 4.1.0 中的錯誤?
在編寫一些
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$/
在您的情況下。這可能不適用於所有極端情況。