A Bash világában az eljárások és függvények kissé idegen módon viselkednek. Jobban meggondolva az eljárások még annyira nem is, de a függvények eltérőek a „megszokottól”.
Mindkét esetben a definíció hasonló:
vagy csak simán
Ez igaz akkor is, ha eljárást írunk, és akkor is, ha függvényt. Az eljárás az egyszerűbb eset, mert akkor akkor csak annyit írunk a főprogramban, hogy eljárásnév és meghívódik az eljárás. Pl.
Ha paramétereket is kezelni szeretnénk az alprogramokban, akkor ugyanúgy át lehet adni, mint a parancssori paramétereket ($1, $2, …). Ezt úgy lehet megtenni, hogy az eljárás törzsén belül adom meg ezeket.
A nehezebb helyzet ott kezdődik, ha ténylegesen függvényeket akarunk kezelni, esetleg visszatérési értékekkel.
Ez sem olyan bonyolult, de trükközni kell vele.
Ha számot szeretnék visszaadni, akkor a return
Másik lehetőség, hogy a függvényen belüli echo-t átirányítjuk egy változóba, így nem fog kiírni semmit a kimenetre, hanem egy változónak adjuk át, és ennek a tartalmát íratjuk ki. Pl.
Harmadik esetben viszont, ha paramétert is akarunk átadni a függvénynek, akkor érdemes parancs kiértékelésként használni. Pl.
Utolsó esetben pedig, ha nem konstans értéket adok paraméternek, hanem változót, akkor azt ugyanúgy (parancs kiértékelésként) kell használni, csak a meghívás fog változni. Pl.
Egy buktatóra fel kell hívni a figyelmet: alprogramon belül, ha echo-t akarunk használni, akkor önmagában a parancs megfogja a folyamatot, és a felhasználó nem tudja, miért üres sorban villogó kurzorral. Ezt megakadályozandó, az echo parancsot át kell irányítani a standard outputra. Pl. echo "A megadott adat nem fajl!" >&2 (a &2 a standard output).