比较shell脚本中的字符串

比较shell脚本中的字符串

我正在创建一个脚本来检查我的一个客户对虚拟机的要求。脚本的第一部分是检查操作系统是否是虚拟的。为了实现这个目标,我创建了以下脚本。问题是,即使系统是虚拟的,它也无法工作,我的意思是测试是否无法工作!!!有谁能帮我指出我是否做错了什么(我是 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

相关内容