Hogyan adhat vissza értéket a bash függvényből, zen jegyzeteket

Mint tudják, bash minden funkció és parancs csak a visszatérési kódot adja vissza (nulla - sikeres befejezés, nem nulla hiba). Annak érdekében, hogy valami mást térjen vissza a számhoz, az alábbi technikák valamelyikét kell használni:

  • globális változó beállítása
  • helyettesítés használata (olvas parancs kimenet)
  • egy függvény közvetett hivatkozása

Nézzük részletesebben, hogyan használjuk ezeket a megközelítéseket.

Globális változó beállítása

Mi lehetne egyszerűbb, mint egy függvényben a globális hatókör elrejtése, majd a fő programból az adatok levétele?

Érthető, mert a bash összes változója alapértelmezés szerint globális.

A helyettesítés, más néven $ (függvény)

Elég egy közös mechanizmus. Biztos, hogy ismeri, máris többször is használta. Az ötlet az, hogy mindent tárolunk, amit egy parancs ad ki (a függvény egy parancs is). És persze, hogy anélkül, hogy a globális hatást el kellene zárnod, ajánlott helyi változókat használni.

Egy közvetett hivatkozás (közvetett hivatkozások) átadása egy függvénynek

A legérdekesebb, funkcionális és kínos mechanizmus :)
Könnyebb látni 1 alkalommal, mint hallani 100-szor:

És most őszintén és rendben

Más programozási nyelvektől eltérően a bash parancsfájlokban a függvény paraméterei általában érték szerint haladnak. Ha a változó nevek (amelyek valójában mutatók) átkerülnek a függvénybe paraméterekként, akkor ezeket string karakterekként fogják kezelni.
A függvények az argumentumaikat literálként kezelik.

A változók a különböző programozási nyelvek adatainak bemutatásának módját jelentik. A változó nem több, mint egy címke - a számítógéphez tartozó területnek vagy csoportoknak a neve, ahol az adatokat tartalmazzák.

A változó neve az "értéktartó" az adatérték tárolásához. Egy változó értékének (értékének megszerzéséhez) való hozzáférést egy változó helyettesítésnek nevezzük.

Megjegyzem, hogy meg kell különböztetni a változó nevét és annak értékét. Ha a változó1 a változó neve, $ változó1 az értékre utal. amely tartalmazza.

Amint fent említettük, miután a változó (Var $ változó hivatkozása) helyettesítjük, értéket kapunk. amelyre a változó jelzi. És mi a helyzet azzal a jelentéssel, amit maga a jelentés is jelez. $$ var. Emlékszel, hogy a változókkal úgy működünk, mint a literálokkal. ) Nos, itt próbáljuk megérteni egy olyan változó által mutatott értéket, amelynek neve egy másik változó értéke is. Egy kicsit zavaros, de remélem, elkapják.

1. példa Megértéshez

2. példa Gyakorlati

Mivel a változó neve önmagában egy változóban van tárolva, nem tudjuk közvetlenül telepíteni. Ehhez használja az eval lehetőséget. Ha rövid, az eval azt mondja a bash interpreternek, hogy kétszer kell értelmezni a karakterláncot. Az első alkalommal a result = 'some value' lesz beállítva. és a második - a szükséges változó (amelyet érvként adtak át).

A változónév megadásakor, amelyet parancssori argumentumként adtak át, győződjön meg róla, hogy helyileg és egy változóban van egy kiváló (ha lehetséges) név, nem pedig a parancssorban. Ha ezt nem teszi meg, és a parancssori paraméterként átadott változó neve megegyezik azon helyi változó nevével, amelyben tárolja az értéket, semmi sem fog működni: D

3. példa Nem működik!

Miért? Nos. attól a pillanattól kezdve, amikor az eval másodszor helyettesíti a result = 'some value' értéket. az eredmény már a függvény helyi változója, ezért újból telepítjük, nem a kívánt változót.

A nagyobb rugalmasság érdekében különböző megközelítéseket lehet kombinálni:

4. példa Univerzális

Ie ha a függvénynek nincs paramétere, az érték egyszerűen kimenetre kerül az stdoutra.

Kapcsolódó cikkek