2013-05-31 114 views
0

在變量空間中分別讀取多個值如何使用shell腳本讀取變量中的多個值

我有一個存儲命令輸出的變量。有時,命令的輸出爲一個字,有時輸出命令具有空間多個單詞分隔

MAC= 00:1c:c4:5b:6e:fe 00:1c:c4:5b:6e:fe 00:1c:c4:5b:6e:fe 00:1c:c4:5b:6e:fe 
echo $MAC 

我想用if語句像下面

如果$ Mac有多於一個字然後回顯不正常別的回聲確定

在此先感謝

+0

我從下面得到價值 MAC2 ='grep -w「$ MAC」juniper.conf | awk'{sub(/; /,「」); print}'| awk'{print $ 4;}'' 它一般grep匹配文件的入口 – user2074481

+0

@ l0b0'MAC = ...'*是*有效的shell代碼;它只是以完全不同的方式來解讀。它向下面的命令的環境中添加「MAC」(具有空值)。 – chepner

+0

@chepner你說得對,我應該更具體。 – l0b0

回答

1

你不應該有後的空間。

嘗試

awk '{print (NF>1?"not ":"")"ok"}' <<<$MAC 

例如

kent$ MAC="00:1c:c4:5b:6e:fe 00:1c:c4:5b:6e:fe 00:1c:c4:5b:6e:fe 00:1c:c4:5b:6e:fe" 

kent$ awk '{print (NF>1?"not ":"")"ok"}' <<<$MAC         
not ok 
1

如果你想簡單地確定是否有在$ MAC空間,你可以這樣做:

case $MAC in 
    *\ *) 
      echo "not ok" 
      ;; 
     *) 
      echo "ok" 
      ;; 
esac 
+0

這個工程,但如果我把這之前我的if else條件腳本停止工作,如果匹配任何上述規則。 我想if-else語句,所以我的進一步的代碼也應該運行。 – user2074481

1

嘗試:

if [[ "$MAC" =~ "\s" ]]; then echo not ok; else echo ok; fi 

以下之前,首先會生成字符串發生(空格):

address=${MAC%% *} 
+0

我可以讀取單詞而不是空格 前6個單詞我想閱讀這是可能的,因爲您的腳本運行良好。 – user2074481

+0

@ user2074481看到編輯上面 – devnull

+0

我已經完成它與字數感謝您的回覆和支持 熱情的問候, – user2074481