比较shell脚本中的string

我正在创build一个脚本来检查我的客户之一有关虚拟机的要求。 脚本的第一部分是检查操作系统是否是虚拟的。 为了实现这个目标,我创build了以下脚本。 问题是,即使系统是虚拟的,它不工作,我的意思是testing,如果不工作! 有没有人可以帮助,并说如果我做错了什么(我是初学者在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 

echo来检查你的命令返回的$CHECK_SYSTEMstring,这不是你想象的那样。 您将需要进一步处理它以删除一些空格。

如果将virt-what命令安装在系统上,您可能会发现它更有用

 # virt-what vmware 

要么

 # virt-what kvm 

virt-什么是shell脚本,因此您可以轻松地将副本添加到安装脚本中。

还要注意,通常最好使用$(...)而不是反引号。

@Iain是正确的,这个脚本可能不会做你所需要的,但是一般来说,如果你想比较string,你错过了一个等号,这可能会更好:

 if [ "$CHECK_SYSTEM" == "Product Name: VMware Virtual Platform" ] ; then 

看到这个优秀的线程更多: https : //stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash-script