Bash işlevine parametre geçirme
Bir Bash fonksiyonuna nasıl parametre aktarılacağını araştırmaya çalışıyorum, ancak karşıma çıkan şey her zaman komut satırından nasıl parametre aktarılacağı oluyor.
Komut dosyam içinde parametreleri geçmek istiyorum. Denedim:
myBackupFunction("..", "...", "xx")
function myBackupFunction($directory, $options, $rootPassword) {
...
}
Ancak sözdizimi doğru değil, fonksiyonuma nasıl parametre aktarabilirim?
893
3
Bir fonksiyonu bildirmenin iki tipik yolu vardır. Ben ikinci yaklaşımı tercih ediyorum.
veya
Bir fonksiyonu argümanlarla çağırmak için:
İşlev, iletilen bağımsız değişkenleri konumlarına göre (adlarına göre değil) ifade eder, yani $1, $2, vb. $0 kodun kendi adıdır.
Örnek:
Ayrıca, işlevinizi bildirildikten sonra çağırmanız gerekir.
Çıktı:
Referans: Gelişmiş Bash-Komut Dosyası Kılavuzu.
Yüksek seviyeli programlama dilleri (C/C++/Java/PHP/Python/Perl...) bilgisi, meslekten olmayan kişilere bash fonksiyonlarının bu diğer dillerde olduğu gibi çalışması gerektiğini düşündürecektir. Bunun yerine, bash fonksiyonları kabuk komutları gibi çalışır ve bir kabuk komutuna (ls -l) bir seçenek aktarılabileceği gibi argümanların kendilerine aktarılmasını bekler. Gerçekte, bash'teki fonksiyon argümanları konumsal parametreler olarak ele alınır (
$1, $2..$9, ${10}, ${11}
, vb.). Getopts`un nasıl çalıştığı düşünüldüğünde bu sürpriz değildir. Bash'te bir fonksiyonu çağırmak için parantezler gerekli değildir.(Not: Şu anda Open Solaris üzerinde çalışıyorum.)
Parantezleri ve virgülleri atlayın:
ve fonksiyon şu şekilde görünmelidir: