Android

Bash funkcije

Napredne funkcije na bazi PostgreSql - I

Napredne funkcije na bazi PostgreSql - I

Sadržaj:

Anonim

Bash funkcija je u osnovi skup naredbi koje se može nazvati više puta. Svrha funkcije je da vam pomogne da učinite čitljivije skripte kako biste izbjegli pisanje istog koda iznova i iznova.

U usporedbi s većinom programskih jezika, Bash funkcije su ponešto ograničene. U ovom ćemo udžbeniku opisati osnove Bash funkcija i pokazati vam kako ih koristiti u skriptu školjki.

Izjava o funkciji bash

Sintaksa za proglašavanje bash funkcije vrlo je jednostavna. Mogu biti deklarirani u dva različita formata:

  1. Prvi format započinje s nazivom funkcije, a slijede ga zagrade. Ovo je željeni i više korišteni format.

    function_name () { commands }

    Verzija jednog retka:

    function_name () { commands; }

    Drugi format započinje riječju rezerviranom za function a slijedi naziv funkcije.

    function function_name { commands }

    Verzija jednog retka:

    function function_name { commands; }

Nekoliko bodova koje je potrebno napomenuti:

  • Popis naredbi između kovrčavih zagrada {} je tijelo funkcije. Valoviti zagrade koji okružuju funkcijsko tijelo moraju se odvojiti od tijela razmacima ili novim linijama. Definiranje funkcije ga ne izvršava. Da biste pozvali bash funkciju, jednostavno upotrijebite naziv funkcije. Naredbe između kovrčavih zagrada izvršavaju se kad god se funkcija poziva u skriptu ljuske. Definicija funkcije mora se postaviti prije bilo kakvih poziva na funkciju. Kada koristite jednoredne „zbijene“ funkcije, zarez i zarez ; mora slijediti zadnju naredbu u funkciji. Imena svojih funkcija uvijek biste trebali pokušavati opisivati.

Da biste ovo bolje razumjeli, pogledajte sljedeći primjer:

~ / Hello_world.sh

#!/bin/bash hello_world () { echo 'hello, world' } hello_world

Analizirajmo kod po liniju:

  • U 3 redu definiramo funkciju tako da joj dodijelimo ime i otvorimo kovrčavu zagradu { koja označava početak tijela funkcije. Linija 4 je tijelo funkcije. Funkcijsko tijelo može sadržavati više naredbi i deklaraciju varijabli. Linija 7 hello_world se zatvara } , definira kraj funkcije hello_world 7 retku izvršavamo funkciju. Funkciju možete izvršiti onoliko puta koliko trebate.

Ako pokrenete skriptu, ispisat će se hello, world .

Opseg varijabli

Globalnim varijablama su varijable kojima se može pristupiti s bilo kojeg mjesta u skripti bez obzira na opseg. U Bashu su sve varijable prema zadanim postavkama definirane kao globalne, čak i ako su deklarirane unutar funkcije.

Lokalne varijable mogu se deklarirati u funkcijskom tijelu s local ključnom riječi i mogu se koristiti samo unutar te funkcije. Možete imati lokalne varijable s istim nazivom u različitim funkcijama.

Da biste bolje ilustrirali kako opseg varijabli djeluje u Bashu, razmotrimo primjer:

~ / 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"

Skripta započinje definiranjem dvije globalne varijable var1 i var2 . Zatim je funkcija koja postavlja lokalnu varijablu var1 i mijenja globalnu varijablu var2 .

Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D

Iz gore navedenog možemo zaključiti da:

  • Ako postavite lokalnu varijablu unutar funkcionalnog tijela s istim nazivom kao i postojeća globalna varijabla, ona će imati prednost nad globalnom varijablom. Globalne se varijable mogu mijenjati unutar funkcije.

Povratne vrijednosti

Za razliku od funkcija u "stvarnim" programskim jezicima, Bash funkcije ne omogućuju vam vraćanje vrijednosti kad se zove. Kada se bash funkcija dovrši, njezina povratna vrijednost je status posljednje izjave izvršene u funkciji, 0 za uspjeh i ne-nulti decimalni broj u rasponu 1 - 255 za neuspjeh.

Status povratka može se odrediti pomoću ključne riječi return , a dodijeljen je varijabli $? , Izjava return prekida funkciju. Možete to smatrati statusom izlaza funkcije.

~ / Return_values.sh

#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?

some result 55

Da bismo iz funkcije zapravo vratili proizvoljnu vrijednost, trebamo koristiti druge metode. Najjednostavnija opcija je dodijeliti rezultat funkcije globalnoj varijabli:

~ / Return_values.sh

#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result

some result

Druga, bolja opcija za vraćanje vrijednosti s funkcije je slanje vrijednosti u stdout koristeći echo ili printf kao što je prikazano u nastavku:

~ / Return_values.sh

#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result

some result

Umjesto da jednostavno izvršimo funkciju koja će ispisati poruku u stdout, izlaz iz funkcije func_result varijabli func_result koristeći naredbu $() . Varijabla se kasnije može koristiti prema potrebi.

Prolaženje argumenata na Bash funkcijama

Da biste prenijeli bilo koji broj argumenata bash funkciji, jednostavno ih stavite odmah nakon naziva funkcije, odvojenih razmakom. Dobra je praksa dvostruko citirati argumente kako bi se izbjeglo pogrešno uspostavljanje argumenta s razmacima u njemu.

  • Prošli parametri su $1 , $2 , $3 $n , što odgovara položaju parametra nakon naziva funkcije. Promjena $0 rezervirana je za ime funkcije. Promjena $# sadrži broj pozicijskih parametara / argumenata koji su preneseni u function.V varijable $* i $@ sadrži sve pozicione parametre / argumente proslijeđene u funkciju.
    • Kada se dvostruko citira, "$*" proširuje na jedan niz odvojen razmakom (prvi znak IFS) - "$1 $2 $n" .Kada se dvostruko citira, "$@" proširuje na odvojene nizove - "$1" "$2" "$n" .Kada nisu dvostruko citirani, $* i $@ su isti.

Evo primjera:

~ / Passing_arguments.sh

#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"

Hello Joe

Zaključak

Bash funkcija je blok koda za višekratnu upotrebu dizajniran za izvođenje određene operacije. Jednom definirana, funkcija se može pozvati više puta unutar skripte.

Možda ćete također htjeti pročitati o tome kako pomoću funkcije Bash stvoriti nezaboravnu naredbu prečaca za dužu naredbu.

bash terminal