问题描述
在Vmware虚拟机上,执行如下Shell代码获取VM类型
1 |
|
预期返回"VMware"
,实际返回"Manufacturer: VMware, Inc.\nVMware"
,这个返回的结果是错误的
1 | # infra: Manufacturer: VMware, Inc. |
原因分析
问题出在echo "$infra" | grep "VMware"
,这行代码判断虚拟机类型的时候,也使用了echo,导致返回的字符串多了一行(Manufacturer: VMware, Inc.)。
解决方法
方法1:echo "$infra" | grep "VMware"
改成 echo "$infra" | grep "VMware" > /dev/null 2>&1
方法2:
直接定义全局变量保存字符串,回避echo语句的副作用