SORU
6 AĞUSTOS 2010, Cuma


'arasındaki fark ne [[[bash?

Bash adam sayfa ve [[ kullandığını söylüyor Koşullu İfadeler baktım. Koşullu İfadeler baktım sonra bölüm ve test ([) aynı operatörleri listeler.

Merak ediyorum da, bash [ [[ arasındaki fark nedir?

CEVAP
6 AĞUSTOS 2010, Cuma


[[ [ komut bash bu gelişmedir. Eğer bash hedef komut yazarsanız daha iyi bir seçim yapmak birkaç geliştirme var. Benim Favorilerim:

  1. [ olmayan bazı özel davranışları vardır bu yüzden kabuk sözdizimsel bir özellik. Artık [[ boşluk daha fazla boş dizeleri ve dizeleri sezgisel olarak işlemesi nedeniyle değişkenler alıntı deli gibi. [ ile örneğin, yazmak zorunda

    if [ -f "$FILE" ]
    

    doğru boş dizeleri işlemek veya boşluk içeren dosya adları için. [[ ile tırnak gereksiz

    if [[ -f $FILE ]]
    
  2. Sözdizimsel bir özellik olduğu için, dize karşılaştırmaları için && || boolean testleri için operatörler ve < > kullanmanıza olanak sağlar. [ yapamazsınız çünkü bu bir düzenli komut ve &&, ||, <, ve > geçmedi düzenli komutları gibi komut satırı argümanları.

  3. Düzenli ifade eşleşmesi yapıyor =~ harika bir operatör var. [ ile yazabilirsin

    if [ "$ANSWER" = y -o "$ANSWER" = yes ]
    

    [[ ile bu gibi yazabilirsiniz

    if [[ $ANSWER =~ ^y(es)?$ ]]
    

    Hatta BASH_REMATCH depolar olan yakalanan gruplarına erişim sağlar. Örnek "" eğer "Evet" yukarıdaki. tam yazdığınız es olurdu

  4. Desen eşleştirme aka bedava genelleme olsun. Belki Evet türü hakkında daha az kesin. Belki kullanıcı bu tür bir şey y iyisin. Size örtülü var:

    if [[ $ANSWER = y* ]]
    

Bash bir uzantısı olduğunu unutmayın, eğer sh-uyumlu komut yazıyorsanız o zaman [ ile sopa gerekir. Eğer çift parantez kullanırsanız #!/bin/bash mesele satırı olduğundan emin senaryon için.

Ayrıca Bkz

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • michellefeng's channel

    michellefeng

    26 Kasım 2006
  • TomSka

    TomSka

    30 Mayıs 2006