如何在具有 AWK 语句的 bash 脚本中使用 --enable-switch

How to use --enable-switch in a bash script having AWK statement

刚刚发现我在 "awk" 中使用 switch-case 的问题与此知识库中的问题完全相同:

switch/case doesn't work in awk

现在我在 bash 脚本中使用我的 awk 语句,而不是 运行 它作为一个单独的 AWK 脚本文件。考虑到如何在 bash 脚本中使用 --enable-switch。这是我的脚本的结构:

#! bin/ksh
. ~/.profile
// bash if-else statements to perform some tasks
/usr/bin/awk '
BEGIN {
        // array[] defined
}

// some statements
function printmsg(msg) {
         switch(1) {
         case /pattern1/:
              print msg
              break
         case /pattern2/:
              print msg
              break
         }
}' file

我可以在哪里执行 --enable-switch

我的 GAWK 版本是 gawk-3.1.5-16.el5

您使用的是极旧版本的 gawk,从 4.0 开始默认启用 switch 语句,我们现在使用 4.1.something。您错过了很多非常有用的功能(比 switch 语句有用得多,请参阅 http://www.gnu.org/software/gawk/manual/gawk.html#Feature-History),所以换一个新的 gawk。

话虽如此,您可以在安装新的 gawk 后继续使用 switch() 但恕我直言,这不值得让您的脚本 gawk 特定于此,如果这是唯一的 gawk 特定功能,只需将其重写为 if-elses你正在使用。