2013-05-31 76 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