2017-09-26 52 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