Red Hat Enterprise Linux 5'ten RHEL 6'ya makineleri yavaşça geçirdiğimiz bir ortamda çalışıyorum.
RHEL6 makinelerinde şu anda RHEL5 makinelerinde yapılanlardan farklı bir şeyler yapmak için bazı komut dosyalarına ihtiyacım var.
Pragmatik çözüm çalışma zamanında kontrol etmek ve RHEL5 üzerinde bazı komutlar, bazıları RHEL6 üzerinde ve bazılarında da komutlar çalıştırmaktır.
Bunun pratik bir örneği, ortam modülleri kullanmamızdır ve benim .bashrcbir module load gitsatır içerir , ancak RHEL6 makinelerinde bu komut hataları:
RHEL6 system, git should be installed - not loading module
Modulefile bakarak aşağıdaki kodu bulmak:
set redhatrelease [eval exec "cat /etc/redhat-release"]
if { [regexp -nocase {release 6} $redhatrelease] } {
puts stderr "\n\t RHEL6 system, git should be installed - not loading module\n"
} else {
...
}
Bu istediğimi yapıyor gibi görünüyor, ama daha kısa bir şey umuyordum.
Peki, bir bash betiğinde RHEL6'dan RHEL5'e söylemenin en kolay yolu nedir?
İdeal olarak, farklı ana versiyonlarda sağlam olmalı, ancak küçük sürüm sayısındaki değişikliklere toleranslı olmalıdır.
gitBash modülüne ihtiyacı varsa, onu çağırmadan önce var olup olmadığını kontrol edersiniz. Daha sonra göründüğünde / belirdiğinde, çekinizin sonuçları değişir, bu nedenle aniden ekstra çaba harcamadan özellik çalışmaya başlar.
lsb_release -rbaşka metinler de vardır, örn Release: 5.8. Dennis Kaarsemaker'ın açıkladığı gibi , lsb_release -rsbunun yerine kullanırsanız, sadece sayıyı alırsınız.
lsb_releaseişi? (-rsize sadece numarayı vermelidir;-amevcut her şeyi de görmeye çalışın ) Öyleyse, bu da çapraz satıcıdır.