SORU
5 AĞUSTOS 2008, Salı


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
5 AĞUSTOS 2008, Salı


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

Daha Fazla Okuma

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • katherine gomez

    katherine go

    1 Aralık 2011
  • MrDevin521

    MrDevin521

    18 Temmuz 2010
  • SignatureSeries

    SignatureSer

    24 Aralık 2006