Arama Ruby shell komutları
Nasıl Ruby bir programın içinde kabuk komutlarını arayayım mı? Nasıl Ruby bu komutların çıktıları geri alabilirim?
CEVAP
Bu açıklama bir arkadaşımdan this commented Ruby script dayanmaktadır. Eğer senaryoyu geliştirmek istiyorsanız, bağlantıyı güncelleştirmek için çekinmeyin.
İlk olarak, Ruby, shell seslendiği zaman, genellikle /bin/sh
, çağırır unutmayındeğilBash. Bazı Bash sözdizimi tüm sistemlerde /bin/sh
tarafından desteklenmiyor.
Yollar bir kabuk betik çalıştırmak
cmd = "echo 'hi'" # Sample string that can be used
1. Kernel#`
, yaygın olarak adlandırılan backticks – `cmd`
Bu birçok diğer diller, Bash, PHP ve Perl gibi
Döner kabuk komutu sonucu.
Dokümanlar: http://ruby-doc.org/core/Kernel.html#method-i-60
value = `echo 'hi'`
value = `#{cmd}`
2. Yerleşik sözdizimi, %x( cmd )
x
karakteri şudur, herhangi bir karakter olabilir, ayırıcı,.
Eğer sınırlayıcı karakterler(
, [
, {
, ya <
,biri ise
hazır bilgi karakterleri eşleşen kapanış sınırlayıcı,oluşur
iç içe sınırlayıcı çiftleri dikkate alarak. Diğer tüm sınırlayıcıları için
hazır bilgi karakterleri bir sonraki oluşumu için oluşur Yukarı
sınırlayıcı karakter. Dize ilişkilendirme #{ ... }
izin verilir.
Döner kabuk komutu sonucu, sadece ters tırnaklar, yeni gibi.
Dokümanlar: http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html
value = %x( echo 'hi' )
value = %x[ #{cmd} ]
3. Kernel#system
Bir elektron koparmak için verilen komutu çalıştırır
Geri: komut bulundu ve başarılı bir şekilde, aksi takdirde false . true
Dokümanlar: http://ruby-doc.org/core/Kernel.html#method-i-system
wasGood = system( "echo 'hi'" )
wasGood = system( cmd )
4. Kernel#exec
Belirli bir dış komutu çalıştırarak geçerli sürecini değiştirir.
Dönüş: yok, geçerli işlem değiştirilir ve asla devam ediyor
Dokümanlar: http://ruby-doc.org/core/Kernel.html#method-i-exec
exec( "echo 'hi'" )
exec( cmd ) # Note: this will never be reached because of the line above
Ekstra Bir Tavsiye
$CHILD_STATUS
, aynı $?
eğer ters tırnaklar, yeni, system()
%x{}
kullanırsanız sistem idam son komut durumuna erişir.
exitstatus
pid
özelliklerine erişebilirsiniz
$?.exitstatus
Ruby: örneği Arama sınıf yöntemi...
Ruby: bir desen için dosya metin Arama...
Nasıl ruby hash değerleri ile karma bi...
Ruby: Proc#arama vs verim...
&Quot;geri arama uygulamak için nasıl&...