Bash shell szkriptelés - Function (funkciók a szkriptben)
Tartalomjegyzék:
- Bash Funkció Nyilatkozat
- Változók köre
- Visszatérési értékek
- Érvek átadása a bash funkciókhoz
- Következtetés
A Bash funkció lényegében olyan parancsok halmaza, amelyek sokszor meghívhatók. A funkció célja, hogy segítsen a bash szkriptek olvashatóbbá tételében, és elkerülje ugyanazon kód újra és újra írását.
A legtöbb programozási nyelvhez képest a Bash funkciók kissé korlátozottak. Ebben az oktatóanyagban bemutatjuk a Bash funkcióinak alapjait, és megmutatjuk, hogyan kell ezeket használni a shell parancsfájljaiban.
Bash Funkció Nyilatkozat
A bash függvény deklarálásának szintaxisa nagyon egyszerű. Két különböző formátumban deklarálhatók:
-
Az első formátum a funkció nevével kezdődik, amelyet zárójelek követnek. Ez az előnyben részesített és jobban használt formátum.
function_name () { commands }Egysoros verzió:
function_name () { commands; }A második formátum a
functionszámára fenntartott szóval kezdődik, amelyet a funkció neve követ.function function_name { commands }Egysoros verzió:
function function_name { commands; }
Néhány szempont, amit meg kell jegyezni:
- A
{}göndör kapcsok közötti parancslista a függvény testét jelenti. A funkcionális testet körülvevő göndör kapcsolót szóközzel vagy új vonallal kell elválasztani a testtől. A függvény meghatározása nem hajtja végre. A bash függvény meghívásához egyszerűen használja a függvény nevét. A göndör zárójelek közötti parancsok akkor kerülnek végrehajtásra, amikor a függvényt meghívják a shell parancsfájlba. A függvény meghatározását a függvény meghívása előtt el kell helyezni.Ha egysoros „tömörített” funkciókat használ, pontosvesszőt;a függvény utolsó parancsát kell követnie. Mindig meg kell próbálnia a funkcióneveket leírónak tartani.
Ennek jobb megértése érdekében vessünk egy pillantást a következő példára:
~ / Hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
Elemezzük a kódot soronként:
- A
3sorban a függvényt úgy definiáljuk, hogy nevet adunk neki, és kinyitjuk a göndör tartót{, amely a funkció testének kezdetét jelzi. A4a funkció test. A függvénytest több parancsot és változó deklarációt tartalmazhat. Az5, a záróhello_world}meghatározza ahello_worldfüggvényhello_world7sorban a funkcióthello_worldvégre. A funkciót annyiszor hajthatja végre, amennyire szüksége van.
Ha futtatja a szkriptet, az kinyomtatja a
hello, world
.
Változók köre
A globális változók olyan változók, amelyekhez a szkript bárhonnan hozzáférhet, függetlenül a hatálytól. A Bash alkalmazásban alapértelmezés szerint az összes változó globális, még akkor is, ha a függvényben deklarálva vannak.
A helyi változók a függvénytesten belül a
local
kulcsszóval deklarálhatók, és csak ezen a funkción belül használhatók. A különböző függvényekben azonos nevű helyi változók is lehetnek.
A változók hatókörének Bash-ban való jobb bemutatása érdekében vegyünk egy példát:
~ / Variables_scope.sh
#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"
A szkript két globális
var1
és
var2
meghatározásával kezdődik. Ezután egy függvény, amely beállítja a
var1
helyi változót és módosítja a
var2
globális változót.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
A fenti kimenetből arra következtethetünk, hogy:
- Ha a funkcionális test belsejében egy helyi változót azonos nevű, mint egy létező globális változóval állít be, akkor elsőbbséget élvez a globális változóval szemben. A globális változók a függvényen belül megváltoztathatók.
Visszatérési értékek
A „valódi” programozási nyelvektől eltérően, a Bash funkciók nem teszik lehetővé az érték visszaadását híváskor. Amikor a bash függvény befejeződik, annak visszatérési értéke a függvényben végrehajtott utolsó utasítás állapota,
0
siker esetén és nulla tizedes szám az 1 - 255 tartományban a hiba esetén.
A visszatérési állapot meghatározható a
return
kulcsszó használatával, és a
$?
Változóhoz van hozzárendelve
$?
. A
return
nyilatkozat megszünteti a funkciót. Gondolhat úgy, mint a függvény kilépési állapotára.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
A függvény tetszőleges értékének való visszatéréséhez más módszereket kell használnunk. A legegyszerűbb lehetőség a függvény eredményének hozzárendelése egy globális változóhoz:
~ / Return_values.sh
#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result
some result
Egy másik, jobb lehetőség az érték visszaadására egy funkciótól, ha az értéket az
stdout
ra küldi echo vagy
printf
, az alább látható módon:
#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result
some result
Ahelyett, hogy végrehajtanánk azt a funkciót, amely kinyomtatja az üzenetet az stdout-ra, a
$()
parancs helyettesítésével a funkció kimenetet rendeljük a
func_result
változóhoz. A változó később szükség szerint felhasználható.
Érvek átadása a bash funkciókhoz
Ha tetszőleges számú érvet továbbít a bash függvényhez, egyszerűen tegye őket jobbra a függvény neve után, szóközzel elválasztva. Jó gyakorlat az érvek kettős idézése, hogy elkerüljék az érvelés téves értelmezését.
- Az átadott paraméterek
$1,$2,$3…$n, ami a paraméter pozíciójának felel meg a függvény neve után. A$0változó a függvény neve számára van fenntartva. A$#változó a helyhez tartozó paraméterek / argumentumok számát tartalmazza a function.A$*és$@változók az összes pozíciós paramétert / argumentumot tartalmazzák a függvényhez.- Kettős idézés esetén a
"$*"egyetlen, szóközzel elválasztott karakterláncra bővül (az IFS első karaktere) -"$1 $2 $n".Kettős idézés esetén a"$@"külön karakterláncokra terjed ki -"$1" "$2" "$n".Ha nem történik dupla idézés, a$*és a$@azonosak.
- Kettős idézés esetén a
Íme egy példa:
~ / Passing_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Következtetés
A Bash funkció egy újrafelhasználható kód egy adott blokkja, amelyet egy adott művelet végrehajtására terveztek. Miután meghatározta, a függvény többször is meghívható egy szkriptben.
Érdemes elolvasni arról is, hogyan lehet a Bash funkciót felhasználni egy emlékezetes parancsikon létrehozására egy hosszabb parancshoz.
bash terminálAz újratervezéssel kapcsolatos cél az, hogy a webhely tevékenységi hírcsatornáit kiemelkedőbbé és egyszerűbbé tegye. A funkciók lehetővé teszik a barátaink számára, hogy sugároznak és fogadjanak cselekvési értesítéseket, például frissítéseket arról, hogy mit csinálnak, és figyelmeztetéseket küldnek a fényképek vagy megjegyzések közzétételéről.
Az újbóli tervezés a múlt hónapban történt. Azonban a Facebook olyan időt vesz igénybe, amire szüksége van ahhoz, hogy ezt megtehesse, és győződjön meg róla, hogy a lehető legnagyobb mértékben foglalkozik a tagok és a külső alkalmazásfejlesztők által felvetett főbb aggodalmakkal.
A Microsoft az adatvédelmi funkciók hozzáadása az IE8-hoz
A Microsoft új adatvédelmi funkciókat kíván hozzáadni az IE8-hoz, ez a következő böngésző. új adatvédelmi funkciók, amelyek az IE8-mal, a böngésző következő kiadásával fognak megjelenni. A funkciók célja, hogy megkönnyítsék az emberek számára a webes böngészési előzményekkel kapcsolatos információk törlését és ellenőrzését.
Hiányzó funkciók telepítése Windows 10 esetén: hozzáadott funkciók hozzáadása
Hiányzó funkciók Telepítő lehetővé teszi a hiányzó, eltávolított, a régebbi verziók elavultjainak visszaállítása a Windows 10-re.







