今天折腾OmniOS
上的awk
,结果发现很简单的一个程序居然执行出错:
root@localhost:/root# awk 'function print_name_and_age(name, age) { print name" is "age" old" } {print_name_and_age($1, $2)}'
awk: syntax error near line 1
awk: bailing out near line 1
而相同的程序在gawk
下运行的好好的。求助stackoverflow,得到结论如下:
(1)OmniOS
上有nawk
,/usr/bin/awk
(默认的awk
)和/usr/xpg4/bin/awk
。建议使用nawk
。/usr/bin/awk
是老版本的awk
,很多feature
都不支持(基于illumos
内核的操作系统,包括Solaris
可能都需要注意这个问题)。
(2)“bailing out
”是老版本awk
的输出日志。所以一旦有这样的日志输出,需要考虑一下是不是使用的awk
版本有问题。