我正在创建一个脚本来检查我的一个客户对虚拟机的要求。脚本的第一部分是检查操作系统是否是虚拟的。为了实现这个目标,我创建了以下脚本。问题是,即使系统是虚拟的,它也无法工作,我的意思是测试是否无法工作!!!有谁能帮我指出我是否做错了什么(我是 shell 脚本的初学者,可能做错了什么)。
CHECK_SYSTEM=`dmidecode | grep -i "Product Name: VMware Virtual Platform"`
if [ "$CHECK_SYSTEM" = "Product Name: VMware Virtual Platform" ] ; then
printf "%s\n" "The system is Virtual"
else
printf "%s\n" "The system is not Virtual"
exit 192
fi
答案1
用于echo
检查$CHECK_SYSTEM
命令返回的字符串,它不是您想象的那样。您需要进一步处理它以删除一些空格。
如果系统安装了 virt-what 命令,你可能会发现它更有用,例如
# virt-what
vmware
或者
# virt-what
kvm
virt-what 是一个 shell 脚本,因此您可以轻松地将副本添加到安装脚本中。
$(...)
还请注意,现在通常更喜欢使用而不是反引号。
答案2
@Iain 是正确的,这个脚本可能没有满足你的需要,但是一般来说,如果你想比较缺少等号的字符串,那么这个可能会更好:
if [ "$CHECK_SYSTEM" == "Product Name: VMware Virtual Platform" ] ; then
请参阅这个精彩主题以了解更多信息:https://stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash-script