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

  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010
  • World Science Festival

    World Scienc

    1 Mayıs 2008