如何在具有 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你正在使用。
刚刚发现我在 "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你正在使用。