Bash'de Programlama - Kısım 3

Daha güvenli bizim conceptos Bash'de mükemmel çalışan programlama için çok faydalı 2 araç öğreneceğiz. Yaratmayı öğrenin fonksiyonlar ve tanımla boru hatları ilk başta karmaşık görünebilir, ancak sonra muazzam yarar bize sağladıkları.

Borular

Spesifik olarak ve çok fazla dönüş yapmadan, bir boru hattı, bir işlemin çıktısını diğerinin girdisi olarak yönlendirmeye izin veren bir yöntemdir; bu, kod satırlarını azaltmak, sonuçlar için depolama değişkenlerinden vazgeçmek ve iyileştirmek gibi bir dizi avantaj sağlar. senaryonun verimliliği.

Bir boru genellikle | sembolüne sahip olarak tanınır. ifadelerin birleştirilmesine izin veren; Varsayılan olarak kullanılmasına rağmen, boru oluşturmanın başka yolları da vardır.

Örnek: son çekirdek mesajlarını yazdırın

#dmesg, sistem önyüklemesi sırasında en son çekirdek mesajlarını ve yüklenen sürücüleri # görmenizi sağlar; tail bir dosyanın veya #command'ın son kısımlarını yazdırır

dmesg | kuyruk

İstediğimiz kadar karmaşık olsalar da, bir boru hattının temel yapısı, bir komutun sonucunun diğerine girdi olarak kullanılmasına izin verir; bu, ardışık borular eklemeye devam edersek yeni bir komutun girişini sağlayabilir.

fonksiyonlar

İşlevler, yeniden yazmak zorunda kalmadan birkaç kez çalıştırılabilmeleri için birlikte gruplandırılmış bir dizi deyimdir. Bir tür yemek pişirmeyi öğrendiğimizde tarifini bir kağıda yazacağımızı ve o yemeği her pişirmek istediğimizde aynı tarifle yeni bir sayfa yazmak yerine tarife başvurduğumuzu düşünmekle eşdeğerdir.

Belki de işlevlerle ilgili en önemli şey, parametreleri, bunları işlemek için kullanacakları verileri ve bir çıktı üretme olasılığıdır. Yapısı aşağıdaki gibidir:

function-name {

Procesos

}

Örnek: tcp protokolünde çalışan hizmetleri gösteren işlev. Daha fazla borunun nasıl uygulanacağını da görebiliriz.

# Bir fonksiyon adı tanımlıyoruz, sevdiğimiz isim olabilir.

function services_tcp {

#cat, ilişkili bağlantı noktalarıyla tüm hizmetleri içeren # / etc / services klasörünün içeriğini birleştirir ve görüntüler.

# ilk grep listeyi alır ve yorumları kaldırır, –v ile sonucu ters çeviririz

# ikinci grep yalnızca tcp ile ilgili olanları gösterir

kedi / etc / services | grep –v "^ #" | grep tcp

}

Bu işlevi yürütmemiz gerektiğinde, onu ismiyle çağırmalıyız:

tcp_services

Bu durumda parametreler olmadan çalışır; Varsa, işlevin düzgün çalışması için onları eklemeliyiz, aksi takdirde işlev düzgün çalışmayacaktır. Return kullanmak, bir işlevin işlemin sonucu olarak bir değer döndürmesine izin verir.

Örnek: 2 sayının toplamını hesaplayan giriş parametrelerine sahip işlev.

#! / Bin / bash
fonksiyon toplamı ()
{
# let ile tırnak içindeki işlemi gerçekleştirebiliriz
"sonuç = 1 TL + 2 TL"

#return, tamsayı değerini döndürmeye izin verir. İade gerçekleştirildiğinde, değer $? Değişkeninin içine yatırılacaktır.
$ sonuç döndür;
}
 
# Toplam işlevi çağrılır ve 2 girdi parametresi geçilir.

2 3 ekle

# $ değerini yazdırır? yankı ile değişkenin gerçek değerini tırnak içinde değerlendirir
echo -e "Sonuç = $?";

Teşekkürler Juan Carlos Ortiz!


Makalenin içeriği şu ilkelerimize uygundur editoryal etik. Bir hata bildirmek için tıklayın burada.

7 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak.

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Nill işaretçisi dijo

    Emin değilim, ancak işlevlerin dönüş ifadesi yalnızca "exit" hata kodları gibi 0 ile 255 arasında bir tamsayı döndürmek için kullanılır, genellikle her şey yolundaysa 0 ve diğer durumlar için başka bir sayı. Örnekte bu işe yarasa da, sonucu geri döndürmenin iyi bir uygulama olduğunu düşünmüyorum.
    Orada bir saçmalık diyorum ha! göz! Ha!

  2.   johnk dijo

    Gerçek beni şüpheye bıraktı. Her durumda, işlevlerle ilgili sorunları önlemek için, işlevin bir değer veya dizge döndürmek veya yazdırmak istediği durumda dönüşü echo ile değiştirebiliriz.

  3.   Abel S. Büyük Dağı dijo

    Doğru, bunu çözmek için bc komutunu kullanabilirsiniz, toplam işlevinde kullanabilirsiniz: sonuç = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel dijo

    iyi,

    Bash dosyalarını nereye kaydedebileceğimi bilmek istiyorum, böylece sistem genelinde çalışırlar ve bu bin dizini değil, ancak yedekleme için ev olabilir.

    Teşekkürler ve saygılar.

  5.   Joaquin dijo

    Çok teşekkür ederim, senaryolarla başlıyorum ve gerçek şu ki bu çok faydalı, bilginizi çok nazikçe paylaşıyorsunuz!
    selamlar

    1.    hadi linux kullanalım dijo

      Teşekkür ederim! Sarıl!
      Paul

  6.   Cristhian dijo

    Sözdizimi hatası: "(" beklenmeyen
    Örneği çalıştırmaya çalışırken bir hata alıyorum, tamamen aynı şekilde kopyaladım

    Ne olabilir? ubuntu 14.10'dayım

bool(doğru)