Linux 如何通过perl脚本检测我的服务器是否运行centos或其他

Linux 如何通过perl脚本检测我的服务器是否运行centos或其他,linux,perl,Linux,Perl,仅当操作系统为Centos时,我想在脚本中显示一些文本。 如何在perl脚本中实现这一点?试试$^O。它包含用于构建perl版本的操作系统。这里有一些关于它的评论 在其下创建此Perl副本的操作系统的名称 构建,在配置过程中确定。例如 请参阅perlport中的平台。该值与$Config{'osname'}相同 . 另请参见中的配置和-V命令行开关 佩伦。在Windows平台中,$^O不是很有用:因为它是 始终使用MSWin32,它不会区分 95/98/ME/NT/2000/XP/CE/.NET

仅当操作系统为Centos时,我想在脚本中显示一些文本。 如何在perl脚本中实现这一点?

试试$^O。它包含用于构建perl版本的操作系统。这里有一些关于它的评论

在其下创建此Perl副本的操作系统的名称 构建,在配置过程中确定。例如 请参阅perlport中的平台。该值与$Config{'osname'}相同 . 另请参见中的配置和-V命令行开关 佩伦。在Windows平台中,$^O不是很有用:因为它是 始终使用MSWin32,它不会区分 95/98/ME/NT/2000/XP/CE/.NET。使用Win32::GetOSName或 Win32::GetOSVersion请参见Win32和perlport以区分 变种。这个变量是在Perl 5.003中添加的

另请参见。

Try$^O。它包含用于构建Perl版本的操作系统。这里有一些关于它的评论

在其下创建此Perl副本的操作系统的名称 构建,在配置过程中确定。例如 请参阅perlport中的平台。该值与$Config{'osname'}相同 . 另请参见中的配置和-V命令行开关 佩伦。在Windows平台中,$^O不是很有用:因为它是 始终使用MSWin32,它不会区分 95/98/ME/NT/2000/XP/CE/.NET。使用Win32::GetOSName或 Win32::GetOSVersion请参见Win32和perlport以区分 变种。这个变量是在Perl 5.003中添加的


另请参见。

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


正如其他评论者所明确指出的,最好依赖于您想要的确切操作系统功能,或者编写可移植的代码,而不是将其局限于特定的Linux发行版。

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



正如其他评论者已经明确指出的那样,最好依赖于您想要的确切操作系统功能,或者编写可移植的代码,而不是将其限制在特定的Linux发行版中。

问问自己:如果您在寻找自己,您会去哪里?您很可能可以在perl脚本中复制它。您不能改为执行功能检测吗?也就是说,是什么让CentOS不同于您想要显示一条消息?不是perl,但它可以被翻译成它,问问自己:如果您在看自己,您会看哪里?您很可能可以在perl脚本中复制它。您不能改为执行功能检测吗?也就是说,是什么让CentOS不同于您想要显示一条消息?不是perl,但它可以被翻译成perl,这是一个很好的技巧,尽管它依赖于Linux发行版使用相同发行版构建的假设。我想这基本上是正确的,只是不是100%可靠。很好的破解,尽管它依赖于Linux发行版使用相同发行版构建的假设。我猜这基本上是真的,只是不是100%可靠。太好了。但如何将其保存为变量?我需要这样的东西:如果$release==CentOS{something}else{something}我的$osvar=`cat/etc/redhat release`?不带引号的字符串cat可能在./test.pl第2行与将来的保留字冲突。不带引号的字符串etc可能与将来的保留字在./test.pl第2行发生冲突。在./test.pl第2行,未加引号的字符串redhat可能与将来的保留字冲突。参数etc在division/at./test.pl第2行中不是数字。参数cat在division/at./test.pl第2行中不是数字。在./test.pl第2行被零非法除法。@MihaiDomocoş您没有看到/复制`?无论如何,我实际上会使用我的$rh_版本;{使用autodie;打开我的$fh,'@Brad,你想在那里使用autodie吗?如果文件丢失,你可能只希望$rh_release为空?太好了。但是我如何将它保存为变量?我需要这样的东西:If$release==CentOS{something}其他{something}my$osvar=`cat/etc/redhat release`?不带引号的字符串cat可能在./test.pl第2行与将来的保留字冲突。不带引号的字符串etc可能在./test.pl第2行与将来的保留字冲突。不带引号的字符串redhat可能在./test.pl第2行与将来的保留字冲突。参数etc在/at./test.pl第2行中不是数字。参数cat不是数字t division/at./test.pl第2行中的数字。在/test.pl第2行中被零非法除法。@MihaiDomocoş您没有看到/复制“?无论如何,我实际上会使用类似于我的$rh_release;{使用autodie;打开我的$fh,”@Brad,您希望autodie在那里吗?如果文件丢失,您可能只希望$rh_release为空?
$ cat /etc/redhat-release
CentOS release 5.9 (Final)