如何用shell脚本读取变量中的多个值

时间:2013-05-31 11:18:18

标签: linux 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有多个单词,那么echo not ok,否则echo ok

提前致谢

3 个答案:

答案 0 :(得分:1)

你不应该在MAC=之后留出空格。

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

e.g。

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 :(得分:1)

如果您想简单地确定$ MAC中是否有空格,您可以这样做:

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

答案 2 :(得分:1)

尝试:

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

以下将在第一次出现(空格)之前产生字符串:

address=${MAC%% *}