如何在awk中明确声明变量

3
有没有一种方法可以强制(g/n)awk在使用变量之前必须先声明/初始化? (就像vb中的

1
不,没有。 - jas
1个回答

4

检测这类错误的一种机制是 GNU 实现的 Awk(Gawk)中的“lint”支持。

基本示例:

$ gawk --lint 'BEGIN { a }'
gawk: warning: statement has no effect
gawk: warning: reference to uninitialized variable `a'

请注意,Gawk实际上在单个过程中“编译”代码并了解所有变量。它在执行开始之前实例化它们。也就是说,所有变量都是通过它们在程序中的出现而被声明的。不过这并不会导致它们被初始化。
Awk实现可以动态工作,当在执行期间首次遇到变量时,会进行实例化。但是Gawk不会这样工作。
我们可以通过获取转储来查看Gawk知道的变量,该转储将进入名为awkvars.out的文件中。
$ gawk --dump-variables 'function foo() { return x }'
$ grep x awkvars.out 
x: untyped variable

注意:在没有执行foo函数的情况下,x已知并被列为变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接