0

在分隔的变量空间中读取多个值

我有一个存储命令输出的变量。有时命令的输出是单个单词,有时输出命令是多个单词,空格分隔

例子

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 else echo ok

提前致谢

4

3 回答 3

1

尝试:

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

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

address=${MAC%% *}
于 2013-05-31T11:52:48.600 回答
1

你不应该在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
于 2013-05-31T11:22:28.827 回答
1

如果您想简单地确定 $MAC 中是否有空格,您可以执行以下操作:

case $MAC in  
     *\ * )
           echo "not ok"
          ;;
       *)
           echo "ok"
           ;;
esac
于 2013-05-31T11:23:54.610 回答