Linux 开关/外壳不';我不能在awk工作
我正在用redhat linux编写一个简单的awk,但发现switch/case对我不起作用。我在网上搜索,但没有找到解决办法。以下是我的代码:Linux 开关/外壳不';我不能在awk工作,linux,awk,Linux,Awk,我正在用redhat linux编写一个简单的awk,但发现switch/case对我不起作用。我在网上搜索,但没有找到解决办法。以下是我的代码: BEGIN { foo = 1; switch (foo) { case 3: print "x"; break; case 2: print "y" ; break; case 1: pr
BEGIN {
foo = 1;
switch (foo) {
case 3:
print "x";
break;
case 2:
print "y" ;
break;
case 1:
print "z" ;
break;
default:
print "default" ;
}
}
我正在运行的awk是GNU awk 3.1.5。我犯了以下错误:
awk-f test.awk
谁能帮帮我吗?谢谢大家! GAWK手册上说:
6.4.5切换语句
注:本小节描述了gawk 3.1.3中添加的一个实验特性。
默认情况下不启用它。要启用它,请使用“--enable开关”选项
在配置和生成gawk时进行配置。见第B.2.2节[附加说明]
配置选项],第269页,了解更多信息
switch语句允许计算表达式和执行语句
基于案例匹配。Case语句按其顺序检查是否匹配
定义了。如果没有找到合适的案例,则执行默认部分(如果提供)
您使用的是哪个版本的gawk
?它是用--enable开关
选项编译的吗
如果您无法判断
gawk
是否是使用--enable开关编译的,并且您得到了语法错误,那么可以合理地推断它不是。我使用的是默认配置编译的gawk3.1.8
,得到的错误与您在脚本中看到的几乎一样。鉴于此,您的版本极不可能使用必要的配置选项进行编译。如果您愿意,可以使用该选项重新编译gawk
。谢谢!我的gawk版本是gawk,版本3.1.5。但是我如何知道它是否是用--enable switch选项编译的呢?如果在尝试使用switch语句时出现语法错误,那么它可能不是用--enable switch
:)编译的。我的系统上有gawk 4.0.1。问题中的代码在没有诊断信息的情况下运行,并正确打印z
。电流并没有说这个特征是实验性的;它只是说“此开关语句是一个gawk扩展。如果gawk处于兼容模式(请参阅选项),则它不可用。”
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