2013-05-21 27 views
1

我只想在操作系统是Centos的情况下在脚本中显示一些文本。 我该如何在perl脚本中做到这一点?如何检测我的服务器是否正在运行centos或其他来自perl脚本

+0

问问自己:如果你看着自己,你会看起来如何?你可能很可能在perl脚本中复制它。 – 0xCAFEBABE

+1

难道你不能做功能检测吗?也就是说,CentOS与您想要显示的消息有什么不同? – millimoose

+0

是不是perl的,但它可以被转换成它,http://www.unix.com/unix-advanced-expert-users/21468-machine.html?t=21468#post83185 –

回答

4

要回答确切的问题,您可以通过阅读/etc/redhat-release的内容来识别CentOS。例如。

$ cat /etc/redhat-release 
CentOS release 5.9 (Final) 

正如其他评论者明确表示,这是更好地取决于你想要的确切OS的功能,或编写代码是便携式的,而不是将其限制在Linux的一个特定分布。

+0

太好了。但是,我如何将它保存为一个变量? 我需要的是这样的:如果 ($发布== “的CentOS”) { 东西 } 其他 { 东西 } –

+0

我的$ osvar = \'猫的/ etc/redhat的释放\'? – 0xCAFEBABE

+0

未引用字符串“猫”可以与将来发生冲突在./test.pl行保留字2. 未引用字符串“等”在./test.pl符合未来的保留字可能发生冲突2. 未引用字符串“在redhat”可以发生冲突未来在./test.pl行保留字2. 参数“等”不是在./test.pl线分割(/)数字2. 参数“猫”是不是在除法数字(/)在./test.pl第2行。 在./test.pl第2行被零非法除法。 –

2

尝试$^O。它包含用于构建您的Perl版本的操作系统。这是什么perlvar不得不说的。

在配置过程中确定的操作系统的名称,在该操作系统的名称下创建了该Perl副本 。例如 请参见perlport中的PLATFORMS。该值与$ Config {'osname'} 相同。另请参阅配置和在 perlrun中记录的-V命令行开关。在Windows平台上,$^O不是很有帮助:因为它始终是MSWin32,所以它不会告诉我们在95/98/ME/NT/2000/XP/CE/.NET之间的区别。使用Win32 :: GetOSName()或 Win32 :: GetOSVersion()(请参阅Win32和perlport)区分 的变体。这个变量是在Perl 5.003中添加的。

另请参阅perlport

+0

不错的黑客,但它依赖于假设Linux发行版使用相同的发行版构建。 (我猜这其实大部分是真的,只是不是100%可靠。) – millimoose

相关问题