SORU
14 HAZİRAN 2011, Salı


Ruby, exec, sistem ve %arasındaki Fark x() veya Backticks

Kimseyi takip Ruby yöntem arasındaki farkı biliyor mu?

exec, system %x() yaBackticks

Terminal Komutları Program aracılığıyla Ruby üzerinden çalıştırmak için kullanılır biliyorum, ama bunu yapmak için üç farklı yolu vardır neden bilmek istiyorum.

CEVAP
4 EYLÜL 2013, ÇARŞAMBA


sistem

system yöntemi sistemi programı çağırır. Bu yöntem için bir dize bağımsız değişken olarak komut vermelidir. Örneğin:

>> system("date")
Wed Sep 4 22:03:44 CEST 2013
=> true

Çağrılan program Ruby programınızın*, STDOUT *8 STDERR geçerli nesneleri kullanır. Aslında, gerçek bir dönüş değeri ya true, false nil. Örneğin tarih STDIN IO nesne ile basıldı. Yöntemi ise yürütme başarısız olursa işlemi sıfır bir durum olursa işlemi sıfır olmayan bir durum ile çıkıldı false nil ile çıkıldı true dönecektir.

Başka bir yan etkisi global değişken $? Process::Status bir nesneye ayarlanır. Bu nesne çağrılan sürecin süreç kimliği (PID) ve çıkış durumu da dahil olmak üzere çağrı kendisi hakkında bilgi içerir.

>> system("date")
Wed Sep 4 22:11:02 CEST 2013
=> true
>> $?
=> #<Process::Status: pid 15470 exit 0>

Backticks

Backticks (`) sistemi bir program olarak görüyor ve çıkış dönüş. İlk yaklaşım karşı, komut backticks bir çift içine koyarak bir dizi aracılığıyla, ama verilmez.

>> `date`
=> Wed Sep 4 22:22:51 CEST 2013   

Global değişken $? ters tırnaklar, yeni ile de ayarlanır. Backticks ile de dize aradeğerleme yararlanabilirsiniz.

x %()

%x kullanarak backticks tarzı bir alternatiftir. Çıktı da dönecektir. Onun akrabaları gibi %w %q (diğerleri arasında), herhangi bir sınırlayıcı olarak uzun tarzı ayraç sınırlayıcıları maç olarak yeterli olacaktır. Bu %x(date), %x{date} %x-date- tüm eş olduğu anlamına gelir. Backticks gibi %x dize aradeğerleme.

exec

Kernel#exec kullanarak geçerli işlem (Ruby script) süreci exec ile çağrılan ile değiştirilir. Yöntemi, argüman olarak bir dize alabilir. Bu durumda dize genişleme kabuk tabi olacaktır. Birden fazla bağımsız değişken kullanırken, daha sonra ilk bir programı çalıştırmak için kullanılır ve aşağıdaki çağrılacak program için bağımsız değişken olarak sağlanır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Artorius FullPower

    Artorius Ful

    29 Temmuz 2007
  • gadgetgal38

    gadgetgal38

    9 HAZİRAN 2009
  • Skrillex

    Skrillex

    6 NİSAN 2010