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.
değişkeni işlevin adı için ayrılmış olarak tutulur.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ı
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ı
Çı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ı
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ı
Çö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ş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ı
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ı
Çı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ı
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ı
Çö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.