SORU
21 Ocak 2010, PERŞEMBE


&; ruby&"": eğer program Kontrolü ruby gelen YOLDA $var

benim komut ağır harici programlar ve komut güveniyor. Aramam gereken bir program var olduğundan emin olmak istiyorum. Elle, bu kullanarak kontrol ederdim 'olan' komut satırı.

$PATH şeyler File.exists? bir eşdeğer var mı?

(Evet %x[which scriptINeedToRun] ayrıştırmak olabilir sanırım ama bu süper şık değil.

Teşekkürler! yannick


GÜNCELLEME: İşte ben korudu çözüm:

 def command?(command)
       system("which #{ command} > /dev/null 2>&1")
 end

GÜNCELLEME 2: gelmiş birkaç yeni cevaplar - en azından bu teklif biraz daha iyi çözümler.

Güncelleme 3: "" Dosya sınıfa. yöntem ptools gem ekler vardır.

CEVAP
29 Mart 2011, Salı


Çapraz platform çözümü doğru düzgün Windows üzerinde çalışır:

# Cross-platform way of finding an executable in the $PATH.
#
#   which('ruby') #=> /usr/bin/ruby
def which(cmd)
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
    exts.each { |ext|
      exe = File.join(path, "#{cmd}#{ext}")
      return exe if File.executable?(exe) && !File.directory?(exe)
    }
  end
  return nil
end

Bu ana işletim sistemi koklama kullanmaz ve Windows çalıştırılabilir dosyaları için geçerli dosya uzantılarını listeler $TANINAN saygı duyar.

which bombardımanı çoğu sistemde çalışıyor ama hepsi değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011