awk 程序中的语法错误

awk 程序中的语法错误

我想检查 IP 分配的方法,如下所示问题。我在 Ubuntu 12.04 上的 bash 中运行它。我的问题是函数“get_con_id()”在 if 子句中给出“语法错误”。脚本如下(未修改给定问题的答案):

 #!/bin/sh

 # get the connection id of the active connection    
 get_con_id() {
   nm-tool |
     awk '
       $1 == "-" {
         dev = $3
         id = dev
         if (NF > 4 && match($0, "\\[(.*)\\]", a))
           id = a[1]
       }
       /^ / && $1 == "State:" && $2 == "connected" {
         print id
       }'
 }

 # get the address type of the active connection
 nmcli con list id "$(get_con_id)" |
   awk '
     $1 == "ipv4.method:" {
       if ($2 == "manual")
         print "static"
       else if ($2 == "auto")
         print "dynamic"
       else
         print "unknown"
     }'

答案1

您正在使用mawk但该脚本需要gawk

sudo apt-get install gawk

它会自动重置awk为,gawk以便脚本可以正常工作。如果它不会重置,则只需将awk脚本中的每个更改为gawk

相关内容