在变量空间中分别读取多个值如何使用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