在變量空間中分別讀取多個值如何使用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有多於一個字然後回顯不正常別的回聲確定
在此先感謝
在變量空間中分別讀取多個值如何使用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有多於一個字然後回顯不正常別的回聲確定
在此先感謝
你不應該有後的空間。
嘗試
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
如果你想簡單地確定是否有在$ MAC空間,你可以這樣做:
case $MAC in
*\ *)
echo "not ok"
;;
*)
echo "ok"
;;
esac
這個工程,但如果我把這之前我的if else條件腳本停止工作,如果匹配任何上述規則。 我想if-else語句,所以我的進一步的代碼也應該運行。 – user2074481
嘗試:
if [[ "$MAC" =~ "\s" ]]; then echo not ok; else echo ok; fi
以下之前,首先會生成字符串發生(空格):
address=${MAC%% *}
我可以讀取單詞而不是空格 前6個單詞我想閱讀這是可能的,因爲您的腳本運行良好。 – user2074481
@ user2074481看到編輯上面 – devnull
我已經完成它與字數感謝您的回覆和支持 熱情的問候, – user2074481
我從下面得到價值 MAC2 ='grep -w「$ MAC」juniper.conf | awk'{sub(/; /,「」); print}'| awk'{print $ 4;}'' 它一般grep匹配文件的入口 – user2074481
@ l0b0'MAC = ...'*是*有效的shell代碼;它只是以完全不同的方式來解讀。它向下面的命令的環境中添加「MAC」(具有空值)。 – chepner
@chepner你說得對,我應該更具體。 – l0b0