我在redhat linux中写了一个简单的awk,但发现switch/case对我不起作用.我在网上搜索,但没有找到解决方案.以下是我的代码:
BEGIN {
foo = 1;
switch (foo) {
case 3:
print "x";
break;
case 2:
print "y" ;
break;
case 1:
print "z" ;
break;
default:
print "default" ;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在运行的awk是GNU Awk 3.1.5.我得到以下错误:
awk -f test.awk
awk: test.awk:3: switch (foo) {
awk: test.awk:3: ^ syntax error
awk: test.awk:5: case 3:
awk: test.awk:5: ^ syntax error
awk: test.awk:8: case 2:
awk: test.awk:8: ^ syntax error
awk: test.awk:11: case 1:
awk: test.awk:11: ^ syntax error
awk: test.awk:14: default:
awk: test.awk:14: ^ syntax error
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮帮我吗?谢谢!
Jon*_*ler 12
GAWK手册说:
6.4.5交换机声明
注意:本小节描述了在gawk 3.1.3中添加的实验性功能.默认情况下不启用它.要启用它,请使用'--enable-switch'选项配置何时配置和构建gawk.有关更多信息,请参见第B.2.2节[其他配置选项],第269页.
switch语句允许基于大小写匹配来评估表达式和语句的执行.将按照定义的顺序检查案例语句的匹配项.如果找不到合适的案例,则执行默认部分(如果提供).
gawk你使用的是哪个版本?它是用--enable-switch选项编译的吗?
如果您无法判断是否gawk已编译--enable-switch并且您遇到语法错误,则可以合理地推断它不是.我使用的是使用gawk 3.1.8默认配置进行编译,并且几乎可以获得您在脚本中看到的错误.鉴于此,您的版本不太可能使用必要的配置选项进行编译.gawk如果您愿意,使用该选项重新编译并不困难.
| 归档时间: |
|
| 查看次数: |
16100 次 |
| 最近记录: |