Kabuk Parametrelerinin Yorumlaması
Önceki Kabuk Yorumları Sonraki
Kabuk Parametrelerinin Yorumlaması
Parametre ve aritmetik yorumlamaları ile komut ikamelerini $ karakteri başlatır. Yorumlanacak sembol ya da parametre ismi isteğe bağlı olarak, ismin parçası olarak yorumlanacak karakterlerden oluşan değişkeni korumak üzere kaşlı ayraçlar içine alınabilir.
Kaşlı ayraçlar kullanıldığında, parantezi kapatan ilk } bir tırnaklı dizge içinde ya da tersbölü öncelemeli olmamalı ve bir gömülü aritmetik yorumlama, parametre yorumlaması veya komut ikamesi içinde olmamalıdır.
Parametre yorumlaması uygulanacak temel kalıp ${parametre} şeklindedir. parametre yerine değeri kullanılır. parametre, tek haneden geniş bir sayı içeren bir konumsal parametre ise ya da parametreden sonraki karakter, parametre isminin bir parçası olarak yorumlanmayacaksa kaşlı ayraçlar zorunludur.
parametre'nin ilk karakteri bir ünlem ise, bir seviyelik dolaylı değişken yönlendirmesi yapılır. Bash, değişken ismi olarak parametre'nin kalanından şekillendirilen değişkenin değerini kullanır; bu değişken sonradan yorumlanır ve değeri, yorumlamanın geri kalanında parametre'nin değeri olarak kullanılır. Bu işlem dolaylı yorumlama olarak bilinir. Bunun istisnası aşağıda açıklanan ${!önek*} ve ${!isim[@]} yorumlamasıdır. Ünlem işareti sol kaşlı ayraçtan hemen sonra gelmelidir ki dolaylılıktan bahsedilebilsin.
Aşağıdaki durumların herbiri için sözcük, aritmetik yorumlama, yaklaşık yorumlaması ve komut ikamesine konu olur.
Altdizge yorumlaması uygulanamadığında, Bash bir parametrenin boş olması ya da atanmamış olması durumlarının varlığına bakar; bu durumda iki noktanın olmaması bir parametrenin sadece atanmamış olmasına bakılması ile sonuçlanır. İki noktanın olması durumunda işleç her iki durumun mevcudiyeti yanında değerin boş olmamasına da bakar; iki nokta olmadığında işleç sadece mevcudiyete bakar.
${parametre:-sözcük}
parametre atanmamışsa ya da boşsa, sözcük açılımı kullanılır. Aksi takdirde, parametre değeri kullanılır.
${parametre:=sözcük}
parametre atanmamışsa ya da boşsa, önce parametre ye sözcük açılımı atanır sonra da parametre nin değeri kullanılır. Konumsal parametreler ve özel parametreler bu yolla atanamayabilir.
${parametre:?sözcük}
parametre atanmamışsa ya da boşsa, sözcük açılımı (ya da sözcük verilmemişse olmadığını belirten bir ileti) standart hataya yazılır ve kabuk, etkileşimsizse çıkar. Aksi takdirde, parametre değeri kullanılır.
${parametre:+sözcük}
parametre atanmamışsa ya da boşsa, hiçbir şey kullanılmaz, aksi takdirde yerine sözcük açılımı kullanılır.
${parametre:konum}
${parametre:konum:uzunluk}
parametre içerisinde konum dan başlayan uzunluk karakterlik altdizge açılır. uzunluk verilmemişse, konum dan başlayan ve sona kadar giden altdizge açılır. konum ve uzunluk aritmetik ifadelerdir (Kabuk Aritmetiği bölümüne bakınız). Bu Altdizge Açılımı olarak bilinir.
uzunluk sıfır ya da pozitif bir sayıya karşılık olmalıdır. konum negatif bir sayıya karşılıksa değeri, parametre değerinin sonundan itibaren sayılır. parametre @ ise, sonuç, konum dan başlayan uzunluk konumsal parametredir. parametre @ veya * ile indislenmiş bir dizi ismi ise, sonuç, ${parametre[konum]} ile başlayan uzunluk üyeli bir dizidir. Bir negatif konum belirtilen dizinin en büyük indisinden bir büyük indise göre ele alınır. :- yorumlaması ile karışmaması için bir negatif konum : karakterinden en az bir boşluk ile ayrılmalıdır.Altdizge indislemesi konumsal parametreler kullanılmadıkça sıfırdan başlar, konumsal parametrelerin varlığı halinde ise birden başlar.
${!önek*}
${!önek@}
önek ile başlayan isimler, IFS özel değişkeninin ilk karakteri ile ayrılan değişken isimleri olarak yorumlanır.
${!isim[*]}
${!isim[@]}
isim bir dizi değişkeni ise dizi indislerinin bir listesi isim'e atanır. isim bir dizi değilse, isim tanımlıysa 0'a değilse null'a genişletilir. @ kullanılmışsa ve yorumlama çift tırnaklar içinde görünüyorsa her indis ayrı bir sözcüğe genişletilir.
${#parametre}
parametre nin açılım değerindeki karakter sayısını verir. parametre * veya @ ise değer, konumsal parametrelerin sayısıdır. parametre, @ veya * ile indislenmiş bir dizi ismi ise, değer, dizideki üye sayısıdır.
${parametre#sözcük}
${parametre##sözcük}
sözcük dosyaismi açılımındaki gibi bir kalıp üretecek şekilde yorumlanır. Eğer kalıp, parametre nin yorum değerinin başlangıcı ile eşleşirse, yorumlama sonucu olarak, parametre'nin yorum sonucundan en kısa eşleşme kalıbı (# durumu) veya en uzun eşleşme kalıbı (## durumu) silinerek kalan değer atanır. Eğer parametre @ ya da * ise kalıp silme işlemi sıra ile konumsal parametrelerin her birine uygulanır ve yorumlama değeri sonuçlanan liste olur. Eğer parametre, @ ya da * ile indislenmiş bir dizi değişkeni ise, kalıp silme işlemi sıra ile dizi üyelerinin her birine uygulanır ve yorumlama değeri sonuçlanan liste olur.
${parametre%sözcük}
${parametre%%sözcük}
sözcük dosyaismi yorumlamasındaki gibi bir kalıp üretecek şekilde yorumlanır. Eğer kalıp, parametre nin yorum değerinin son bölümü ile eşleşirse, yorumlama sonucu, silinen en kısa eşleşme kalıplı (# durumu) ya da en uzun eşleşme kalıplı (## durumu) parametre nin yorum değeridir. Eğer parametre @ ya da * ise kalıp silme işlemi sıra ile konumsal parametrelerin her birine uygulanır ve yorumlama değeri sonuçlanan liste olur. Eğer parametre, @ ya da * ile indislenmiş bir dizi değişkeni ise, kalıp silme işlemi sıra ile dizi üyelerinin her birine uygulanır ve yorumlama değeri sonuçlanan liste olur.
${parametre/kalıp/dizge}
kalıp dosyaismi yorumlamasındaki gibi bir kalıp üretmek üzere yorumlanır. parametre yorumlanır ve onun değerine karşılık olan en uzun kalıp eşleşmesi dizge ile değiştirilir. Eğer kalıp bir / imi ile başlıyorsa tüm kalıp eşleşmeleri dizge ile değiştirilir. Normalde sadece ilk eşleşme değiştirilir. Eğer kalıp, # ile başlıyorsa parametrenin yorumlanan değerinin başlangıcında eşleştirilmelidir. Eğer kalıp, % ile başlıyorsa parametrenin yorumlanan değerinin sonunda eşleştirilmelidir. Eğer dizge boşsakalıp eşleşmeleri silinir ve kalıp'tan sonraki / işareti atlanabilir. Eğer parametre, @ veya * ise ikame işlemi sıra ile her konumsal parametreye uygulanır ve sonuç bir liste olur. Eğer parametre, @ veya * ile indislenmiş bir dizi değişkeni ise ikame işlemi sırayla dizinin her üyesine uygulanır ve sonuç bir liste olur.
Önceki Üst Ana Başlık Sonraki
Yaklaşık (~) Yorumlaması Başlangıç Komut İkamesi
Bir Linux Kitaplığı Sayfası