2017-09-26 67 views
0

我需要你的帮助有关awk的内部价值分配给外部变量command.Please检查下面的脚本值分配给内部的Linux外部变量在awk

interfaceName=$1 
exitStatus=0 

ip -o link show | awk '{ if($2=="'$interfaceName'") $exitStatus=1}' 

if(exitStatus==0) then 
    exit 0 

else 
    exit 1 
fi 

的脚本采用网络接口名作为参数,然后检查可用的接口与采取的相匹配。如果找到匹配的接口,它,退出与0.The问题1,否则是,我不能在下面一行

awk '{ if($2=="'$interfaceName'") $exitStatus=1}' 

如何在AWK值分配给它改变外部变量退出状态内AWK?

+0

你不能。你需要'print'这个值,并将它接收到一个变量中,如:'foo = $(awk'BEGIN {print“foo”}'); echo $ foo'(并介意shell一侧的引号)。 –

+1

我明白了,非常感谢。 – nihasmata

回答

0

您可以AWK返回退出状态到shell:

ip -o link show | awk '{ if($2=="'$interfaceName'") exit 1}' 

if [ $? -eq 1 ]; then 
    # TODO 
+1

并参见http://cfajohnson.com/shell/cus-faq-2.html#Q24了解如何真正将shell变量的值传递给awk脚本(让它们在awk执行之前展开成为脚本的一部分对此是错误的方法),参见Arnold Robbins的第4版Effective Awk Programming,其基本awk语法(if语句对此是错误的方法)。 'awk -v n =“$ interfaceName”'$ 2 == n {exit 1}'' –

+0

感谢您的评论。 – nihasmata