logo

Bash İşlevleri

Bu başlıkta bash fonksiyonlarının temellerini ve bash kabuk betiğinde nasıl çalıştıklarını gösterdik.

Bash komut dosyası oluşturmadaki işlevler, kodu yeniden kullanmak için mükemmel bir seçenektir. Bash işlevi, bash betiğinde birkaç kez çağrılabilen bir dizi komut olarak tanımlanabilir. Bash'taki işlevin amacı, komut dosyalarınızı daha okunaklı hale getirmenize ve aynı kodu tekrar tekrar yazmaktan kaçınmanıza yardımcı olmaktır. Ayrıca geliştiricilerin karmaşık ve uzun bir kodu, gerektiğinde çağrılabilecek küçük parçalara ayırmasına da olanak tanır. İşlevler her zaman ve tekrar tekrar çağrılabilir; bu da kodu yeniden kullanmamızı, optimize etmemizi ve küçültmemizi sağlar.

Aşağıda bash işlevleriyle ilgili bazı önemli noktalar verilmiştir:

  • Bir işlevi kullanabilmemiz için önce kabuk betiğinde bildirilmesi gerekir.
  • Argümanlar işlevlere iletilebilir ve işlevin içinden , vb. olarak erişilebilir.
  • Yerel değişkenler fonksiyon içerisinde atanabilir ve bu tür değişkenlerin kapsamı yalnızca o fonksiyona ait olacaktır.
  • Bash kabuğunun yerleşik komutları, işlevler kullanılarak geçersiz kılınabilir.

Sözdizimi

Bir bash işlevini bildirmenin sözdizimi iki biçimde tanımlanabilir:

1. İlk yöntem işlev adıyla başlar ve ardından parantez gelir. En çok tercih edilen ve yaygın olarak kullanılan yöntemdir:

 function_name () { commands } 

Tek hatlı versiyondan şu şekilde bahsedebiliriz:

 function_name () { commands; } 

2. İkinci yöntem, işlev ayrılmış sözcüğüyle başlar ve ardından işlev adı gelir:

java süresi
 function function_name { commands } 

Tek hatlı versiyondan şu şekilde bahsedebiliriz:

 function function_name { commands; } 

Çoğu programlama diliyle karşılaştırıldığında Bash işlevleri biraz sınırlıdır. Bazı örneklerin yardımıyla kavramı anlayalım:

Örnek: Yöntem 1

 #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

Çıktı

 Welcome to Javatpoint. 

Örnek: Yöntem 2

 #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

Çıktı

 Welcome to Javatpoint. 

Argümanları Geçmek

Çoğu programlama dilinde olduğu gibi, bash fonksiyonlarında da argümanları iletebilir ve verileri işleyebiliriz. Verileri, komut satırı argümanlarını bir bash betiğine aktarmaya benzer şekilde işleve ekleyebiliriz.

java'da bir dizi nasıl başlatılır

Bash işlevine herhangi bir sayıda argüman iletmek için, bunları işlevin adının hemen sonrasına eklememiz gerekir. Fonksiyon adı ve argümanlar arasına boşluk koymalıyız. Ayrıca içinde boşluk bulunan argümanların yanlış ayrıştırılmasını önlemek için argümanların etrafında çift tırnak kullanılması da harika bir seçim olacaktır.

Argümanların bash işlevlerine aktarılmasıyla ilgili bazı önemli noktalar aşağıda verilmiştir:

  • Verilen argümanlara , , ... $n olarak erişilir, bu da argümanların fonksiyonun adından sonraki konumuna karşılık gelir.
  • Bu başlıkta bash fonksiyonlarının temellerini ve bash kabuk betiğinde nasıl çalıştıklarını gösterdik.

    Bash komut dosyası oluşturmadaki işlevler, kodu yeniden kullanmak için mükemmel bir seçenektir. Bash işlevi, bash betiğinde birkaç kez çağrılabilen bir dizi komut olarak tanımlanabilir. Bash'taki işlevin amacı, komut dosyalarınızı daha okunaklı hale getirmenize ve aynı kodu tekrar tekrar yazmaktan kaçınmanıza yardımcı olmaktır. Ayrıca geliştiricilerin karmaşık ve uzun bir kodu, gerektiğinde çağrılabilecek küçük parçalara ayırmasına da olanak tanır. İşlevler her zaman ve tekrar tekrar çağrılabilir; bu da kodu yeniden kullanmamızı, optimize etmemizi ve küçültmemizi sağlar.

    Aşağıda bash işlevleriyle ilgili bazı önemli noktalar verilmiştir:

    • Bir işlevi kullanabilmemiz için önce kabuk betiğinde bildirilmesi gerekir.
    • Argümanlar işlevlere iletilebilir ve işlevin içinden $1, $2 vb. olarak erişilebilir.
    • Yerel değişkenler fonksiyon içerisinde atanabilir ve bu tür değişkenlerin kapsamı yalnızca o fonksiyona ait olacaktır.
    • Bash kabuğunun yerleşik komutları, işlevler kullanılarak geçersiz kılınabilir.

    Sözdizimi

    Bir bash işlevini bildirmenin sözdizimi iki biçimde tanımlanabilir:

    1. İlk yöntem işlev adıyla başlar ve ardından parantez gelir. En çok tercih edilen ve yaygın olarak kullanılan yöntemdir:

     function_name () { commands } 

    Tek hatlı versiyondan şu şekilde bahsedebiliriz:

     function_name () { commands; } 

    2. İkinci yöntem, işlev ayrılmış sözcüğüyle başlar ve ardından işlev adı gelir:

     function function_name { commands } 

    Tek hatlı versiyondan şu şekilde bahsedebiliriz:

     function function_name { commands; } 

    Çoğu programlama diliyle karşılaştırıldığında Bash işlevleri biraz sınırlıdır. Bazı örneklerin yardımıyla kavramı anlayalım:

    Örnek: Yöntem 1

     #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

    Çıktı

     Welcome to Javatpoint. 

    Örnek: Yöntem 2

     #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

    Çıktı

     Welcome to Javatpoint. 

    Argümanları Geçmek

    Çoğu programlama dilinde olduğu gibi, bash fonksiyonlarında da argümanları iletebilir ve verileri işleyebiliriz. Verileri, komut satırı argümanlarını bir bash betiğine aktarmaya benzer şekilde işleve ekleyebiliriz.

    Bash işlevine herhangi bir sayıda argüman iletmek için, bunları işlevin adının hemen sonrasına eklememiz gerekir. Fonksiyon adı ve argümanlar arasına boşluk koymalıyız. Ayrıca içinde boşluk bulunan argümanların yanlış ayrıştırılmasını önlemek için argümanların etrafında çift tırnak kullanılması da harika bir seçim olacaktır.

    Argümanların bash işlevlerine aktarılmasıyla ilgili bazı önemli noktalar aşağıda verilmiştir:

    • Verilen argümanlara $1, $2, $3 ... $n olarak erişilir, bu da argümanların fonksiyonun adından sonraki konumuna karşılık gelir.
    • $0 değişkeni işlevin adı için ayrılmış olarak tutulur.
    • $# değişkeni, işleve verilen konumsal argüman/parametre sayısını tutmak için kullanılır.
    • $* ve $@ değişkenleri, işleve verilen tüm bağımsız değişkenleri/parametreleri tutmak için kullanılır.
      • $* çift tırnak işaretiyle kullanıldığında (örneğin, '$*'), boşlukla ayrılmış tek bir dizeye genişler. Örneğin, '$1 $2 $n vb.'.
      • $@ çift tırnak işaretiyle kullanıldığında (örneğin, '$@'), ayrı bir dizeye genişler. Örneğin, '$1' '$2' '$n' vb.
      • $* ve $# çift tırnak işaretiyle kullanılmadığında ikisi de aynıdır.

    Aşağıda, işlevlere bağımsız değişkenlerin nasıl aktarılacağına ve işlevin içindeki bağımsız değişkenlere nasıl erişileceğine ilişkin prosedürü gösteren kod bulunmaktadır.

    Bash Komut Dosyası

     #!/bin/bash #Script to pass and access arguments function_arguments() { echo $1 echo $2 echo $3 echo $4 echo $5 } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

    Çıktı

    Bash İşlevleri

    Bu scriptte function_arguments'ı çağırdıktan sonra 'We', 'welcome', 'you', 'on' ve 'Javatpoint' değerlerini ekledik. Bu değerler aktarılır işlev_argümanları parametre olarak kullanılır ve yerel bir değişkende saklanır. Ancak diğer dillerden farklı olarak yorumlayıcı, aktarılan değerleri önceden tanımlanmış değişkenlerde saklar ve bunlar daha sonra geçiş parametrelerinin sırasına göre adlandırılır.

    Örneğin,

    'Biz' kelime değişkene kaydedilir 1 .
    'Hoş geldin' kelime değişkene kaydedilir 2 .
    'Sen' kelime değişkene kaydedilir 3 .
    'Açık' kelime değişkene kaydedilir 4 .
    'Javatpoint' kelime değişkene kaydedilir 5 .

    Değişken Kapsam

    Global değişkenler, kapsamdan bağımsız olarak betiğin herhangi bir yerinden erişilebilen değişkenler olarak tanımlanır. Varsayılan olarak tüm değişkenler, işlev içinde bildirilmiş olsalar bile global değişkenler olarak tanımlanır. Değişkenleri yerel değişken olarak da oluşturabiliriz. Yerel değişkenler işlev gövdesi içinde ?local? anahtar kelime ilk kez atandıklarında. Bunlara yalnızca bu işlevin içinden erişilebilir. Farklı fonksiyonlarda aynı isimde yerel değişkenler oluşturabiliriz. Yerel bir değişken eklemek için aşağıdaki sözdizimini kullanabiliriz:

     local var_name= 

    Değişken kapsamının Bash Komut Dosyasında nasıl çalıştığını daha iyi anlamak için aşağıdaki örneğe bakın:

    Bash Komut Dosyası

     #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

    Çıktı

    Bash İşlevleri

    Çıktıya göre, işlev gövdesi içinde mevcut bir global değişkenle aynı adı taşıyan bir yerel değişken belirlersek, bu, global değişkene göre öncelikli olacaktır. Global değişkenler fonksiyon içerisinde değiştirilebilir.

    Dönüş Değerleri

    Programlama dillerinin çoğu, işlevler için bir değer döndürme kavramına sahiptir. Bu, işlevin verileri orijinal arama konumuna geri göndermesi gerektiği anlamına gelir. 'Gerçek' programlama dillerindeki işlevlerden farklı olarak Bash işlevi, çağrıldığında bir değer döndürme desteği sağlamaz. Ancak, bir programın veya komutun çıkış durumuyla çıkışına benzer bir dönüş durumu ayarlamamıza izin verirler. Bir bash işlevi tamamlandığında, dönüş değeri, işlevde son yürütülen ifadenin durumudur. Başarı durumu için 0 değerini, başarısızlık durumunda ise 1-255 aralığında sıfırdan farklı bir ondalık sayı döndürür.

    Dönüş durumu 'return' anahtar sözcüğü kullanılarak belirtilebilir ve $? değişkenine atanır. Return ifadesi işlevi sonlandırır ve işlevin çıkış durumu olarak çalışır.

    Örneğin, aşağıdaki kodu göz önünde bulundurun:

    Bash Komut Dosyası

     #!/bin/bash #Setting up a return status for a function print_it () { echo Hello $1 return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

    Çıktı

    Bash İşlevleri

    Bir işlevden değer döndürmenin daha iyi bir yolu da değeri bir işleve göndermektir. stdout kullanarak Eko veya baskı aşağıda gösterildiği gibi komutlar:

    Bash Komut Dosyası

     #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

    Çıktı

     Welcome to Javatpoint. 

    Komutları Geçersiz Kılma

    Geçersiz kılacağımız komutla aynı adı taşıyan bir işlev oluşturarak bash komutlarını geçersiz kılma seçeneğimiz var. Örneğin, 'echo' komutunu geçersiz kılmak istiyorsak 'echo' adında bir fonksiyon oluşturmamız gerekir.

    Bash komutlarını geçersiz kılma kavramı, belirli seçeneklere sahip bir komut kullanmak istediğimizde olduğu gibi bazı senaryolarda yararlı olabilir. Ayrıca, komutun tamamını komut dosyası içinde birkaç kez seçeneklerle sunmaktan hoşlanmadığımızda. Bu gibi durumlarda, komut için yerleşik bash komutunu seçeneklerle geçersiz kılabiliriz. Şimdi bazı örneklerin yardımıyla Bash Shell Scripting'deki komutları geçersiz kılma kavramını anlayalım:

    Örnek

    Bu örnekte 'echo' komutunu geçersiz kıldık ve argüman biçimindeki zaman damgasını 'echo' komutuna ekledik.

    Bash Komut Dosyası

     #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo $1 } echo 'Welcome to Javatpoint.' 

    Çıktı

    Bash İşlevleri

    Çözüm

    Bu konumuzda Bash Fonksiyonunu anlattık. Bash işlevi, belirli bir işlemi gerçekleştirmek için geliştirilen yeniden kullanılabilir kod bloğu olarak kabul edilir. Tanımlandıktan sonra bir komut dosyası içerisinde birkaç kez çağrılabilir.


    değişkeni işlevin adı için ayrılmış olarak tutulur.
  • $# değişkeni, işleve verilen konumsal argüman/parametre sayısını tutmak için kullanılır.
  • $* ve $@ değişkenleri, işleve verilen tüm bağımsız değişkenleri/parametreleri tutmak için kullanılır.
    • $* çift tırnak işaretiyle kullanıldığında (örneğin, '$*'), boşlukla ayrılmış tek bir dizeye genişler. Örneğin, ' $n vb.'.
    • $@ çift tırnak işaretiyle kullanıldığında (örneğin, '$@'), ayrı bir dizeye genişler. Örneğin, '' '' '$n' vb.
    • $* ve $# çift tırnak işaretiyle kullanılmadığında ikisi de aynıdır.

Aşağıda, işlevlere bağımsız değişkenlerin nasıl aktarılacağına ve işlevin içindeki bağımsız değişkenlere nasıl erişileceğine ilişkin prosedürü gösteren kod bulunmaktadır.

Bash Komut Dosyası

 #!/bin/bash #Script to pass and access arguments function_arguments() { echo  echo  echo  echo  echo  } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

Çıktı

Bash İşlevleri

Bu scriptte function_arguments'ı çağırdıktan sonra 'We', 'welcome', 'you', 'on' ve 'Javatpoint' değerlerini ekledik. Bu değerler aktarılır işlev_argümanları parametre olarak kullanılır ve yerel bir değişkende saklanır. Ancak diğer dillerden farklı olarak yorumlayıcı, aktarılan değerleri önceden tanımlanmış değişkenlerde saklar ve bunlar daha sonra geçiş parametrelerinin sırasına göre adlandırılır.

java nesnesi

Örneğin,

'Biz' kelime değişkene kaydedilir 1 .
'Hoş geldin' kelime değişkene kaydedilir 2 .
'Sen' kelime değişkene kaydedilir 3 .
'Açık' kelime değişkene kaydedilir 4 .
'Javatpoint' kelime değişkene kaydedilir 5 .

Değişken Kapsam

Global değişkenler, kapsamdan bağımsız olarak betiğin herhangi bir yerinden erişilebilen değişkenler olarak tanımlanır. Varsayılan olarak tüm değişkenler, işlev içinde bildirilmiş olsalar bile global değişkenler olarak tanımlanır. Değişkenleri yerel değişken olarak da oluşturabiliriz. Yerel değişkenler işlev gövdesi içinde ?local? anahtar kelime ilk kez atandıklarında. Bunlara yalnızca bu işlevin içinden erişilebilir. Farklı fonksiyonlarda aynı isimde yerel değişkenler oluşturabiliriz. Yerel bir değişken eklemek için aşağıdaki sözdizimini kullanabiliriz:

 local var_name= 

Değişken kapsamının Bash Komut Dosyasında nasıl çalıştığını daha iyi anlamak için aşağıdaki örneğe bakın:

Bash Komut Dosyası

 #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

Çıktı

Bash İşlevleri

Çıktıya göre, işlev gövdesi içinde mevcut bir global değişkenle aynı adı taşıyan bir yerel değişken belirlersek, bu, global değişkene göre öncelikli olacaktır. Global değişkenler fonksiyon içerisinde değiştirilebilir.

teknolojinin avantajları ve dezavantajları

Dönüş Değerleri

Programlama dillerinin çoğu, işlevler için bir değer döndürme kavramına sahiptir. Bu, işlevin verileri orijinal arama konumuna geri göndermesi gerektiği anlamına gelir. 'Gerçek' programlama dillerindeki işlevlerden farklı olarak Bash işlevi, çağrıldığında bir değer döndürme desteği sağlamaz. Ancak, bir programın veya komutun çıkış durumuyla çıkışına benzer bir dönüş durumu ayarlamamıza izin verirler. Bir bash işlevi tamamlandığında, dönüş değeri, işlevde son yürütülen ifadenin durumudur. Başarı durumu için 0 değerini, başarısızlık durumunda ise 1-255 aralığında sıfırdan farklı bir ondalık sayı döndürür.

Dönüş durumu 'return' anahtar sözcüğü kullanılarak belirtilebilir ve $? değişkenine atanır. Return ifadesi işlevi sonlandırır ve işlevin çıkış durumu olarak çalışır.

Örneğin, aşağıdaki kodu göz önünde bulundurun:

Bash Komut Dosyası

 #!/bin/bash #Setting up a return status for a function print_it () { echo Hello  return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

Çıktı

Bash İşlevleri

Bir işlevden değer döndürmenin daha iyi bir yolu da değeri bir işleve göndermektir. stdout kullanarak Eko veya baskı aşağıda gösterildiği gibi komutlar:

bash dizeyi sınırlayıcıya göre böldü

Bash Komut Dosyası

 #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

Çıktı

 Welcome to Javatpoint. 

Komutları Geçersiz Kılma

Geçersiz kılacağımız komutla aynı adı taşıyan bir işlev oluşturarak bash komutlarını geçersiz kılma seçeneğimiz var. Örneğin, 'echo' komutunu geçersiz kılmak istiyorsak 'echo' adında bir fonksiyon oluşturmamız gerekir.

Bash komutlarını geçersiz kılma kavramı, belirli seçeneklere sahip bir komut kullanmak istediğimizde olduğu gibi bazı senaryolarda yararlı olabilir. Ayrıca, komutun tamamını komut dosyası içinde birkaç kez seçeneklerle sunmaktan hoşlanmadığımızda. Bu gibi durumlarda, komut için yerleşik bash komutunu seçeneklerle geçersiz kılabiliriz. Şimdi bazı örneklerin yardımıyla Bash Shell Scripting'deki komutları geçersiz kılma kavramını anlayalım:

Örnek

Bu örnekte 'echo' komutunu geçersiz kıldık ve argüman biçimindeki zaman damgasını 'echo' komutuna ekledik.

Bash Komut Dosyası

 #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo  } echo 'Welcome to Javatpoint.' 

Çıktı

Bash İşlevleri

Çözüm

Bu konumuzda Bash Fonksiyonunu anlattık. Bash işlevi, belirli bir işlemi gerçekleştirmek için geliştirilen yeniden kullanılabilir kod bloğu olarak kabul edilir. Tanımlandıktan sonra bir komut dosyası içerisinde birkaç kez çağrılabilir.