2013-05-21 41 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

相關問題