Android

Bash-toiminnot

PHP Tutorials | PHP For Beginners

PHP Tutorials | PHP For Beginners

Sisällysluettelo:

Anonim

Bash-toiminto on olennaisesti joukko komentoja, joita voidaan kutsua useita kertoja. Funktion tarkoituksena on auttaa sinua parantamaan bash-skriptisi luettavuutta ja välttämään saman koodin kirjoittamista uudestaan ​​ja uudestaan.

Verrattuna useimpiin ohjelmointikieliin Bash-toiminnot ovat jonkin verran rajoitetut. Tässä opetusohjelmassa kerromme Bash-toimintojen perusteista ja osoitamme, kuinka niitä voidaan käyttää komentosarjoissa.

Bash-toiminnon ilmoitus

Baskitoiminnon ilmoittamisen syntaksi on hyvin yksinkertainen. Ne voidaan ilmoittaa kahdessa eri muodossa:

  1. Ensimmäinen muoto alkaa toiminnon nimellä, jota seuraa suluilla. Tämä on suositeltuin ja eniten käytetty muoto.

    function_name () { commands }

    Yksirivinen versio:

    function_name () { commands; }

    Toinen muoto alkaa function varatulla sanalla, jota seuraa funktion nimi.

    function function_name { commands }

    Yksirivinen versio:

    function function_name { commands; }

Muutamia huomioitavia asioita:

  • Kommenttilista kiharanauhojen {} on funktion runko. Funktion runkoa ympäröivät kiharaketjut on erotettava rungosta välilyönneillä tai uusilla viivoilla.Funktion määrittäminen ei suorita sitä. Käytä bash-toimintoa yksinkertaisesti käyttämällä funktion nimeä. Kommentit kiharanauhojen välillä suoritetaan aina, kun funktiota kutsutaan kuorikomentosarjasta. Toiminnon määritelmä on asetettava ennen toimintoon kutsumista.Kun käytetään yhden rivin "tiivistettyjä" toimintoja, puolipiste ; on noudatettava toiminnon viimeistä komentoa.Yritä aina pitää toiminimesi kuvaavana.

Ymmärtääksesi tätä paremmin katsomalla seuraavaa esimerkkiä:

~ / Hello_world.sh

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

Analysoidaan koodirivi riviltä:

  • Rivillä 3 määrittelemme funktion antamalla sille nimen ja avaamalla kihara-aukon { joka merkitsee funktion rungon alkua. Rivi 4 on funktion runko. Funktion runko voi sisältää useita komentoja ja muuttujien ilmoituksia.Rivi 5 , sulkeva kihara } , määrittelee hello_world funktion hello_world 7 suoritamme toimintoa. Voit suorittaa toiminnon niin monta kertaa kuin tarvitset.

Jos suoritat komentosarjan, se tulostaa hello, world .

Muuttujien laajuus

Globaalit muuttujat ovat muuttujia, joihin pääsee mistä tahansa komentosarjasta soveltamisalasta riippumatta. Bash-muodossa kaikki muuttujat määritetään oletuksena globaaleiksi, vaikka ne olisi ilmoitettu funktion sisällä.

Paikalliset muuttujat voidaan ilmoittaa funktion rungossa local avainsanalla ja niitä voidaan käyttää vain kyseisen funktion sisällä. Eri toiminnoissa voi olla paikallisia muuttujia, joilla on sama nimi.

Tarkastellaan esimerkkiä, jotta muuttujien laajuus toimii paremmin Bashissa:

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

Skripti alkaa määrittelemällä kaksi globaalia muuttujaa var1 ja var2 . Sitten toiminto, joka asettaa paikallisen muuttujan var1 ja modifioi globaalia muuttujaa var2 .

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

Yllä olevasta tuotosta voidaan päätellä, että:

  • Jos asetat paikallisen muuttujan funktion runkoon samalla nimellä kuin olemassa olevan globaalin muuttujan, se on etusijalla globaalin muuttujan kanssa.Globaalimuuttujia voidaan muuttaa toiminnon sisällä.

Palautusarvot

Toisin kuin “oikeiden” ohjelmointikielten toiminnot, bash-toiminnot eivät salli sinun palauttaa arvoa, kun niitä kutsutaan. Kun bash-toiminto suoritetaan loppuun, sen palautusarvo on toiminnossa viimeksi suoritetun lauseen tila, 0 menestykseen ja nollakohtainen desimaaliluku 1 - 255 epäonnistumisen alueella.

Palautustila voidaan määrittää käyttämällä return , ja se määritetään muuttujalle $? . return lopettaa toiminnon. Voit ajatella sitä toiminnon poistotilana.

~ / Return_values.sh

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

some result 55

Minkä tahansa arvon palauttamiseksi funktiosta meidän on käytettävä muita menetelmiä. Yksinkertaisin vaihtoehto on osoittaa funktion tulos globaalille muuttujalle:

~ / Return_values.sh

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

some result

Toinen, parempi vaihtoehto palauttaa arvo funktiosta on lähettää arvo stdout käyttämällä kaikua tai printf kuten alla on esitetty:

~ / Return_values.sh

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

some result

Sen sijaan, että suorittaisimme vain toiminnon, joka tulostaa viestin stdout-tilaan, osoitamme funktion ulostulon func_result muuttujaan käyttämällä $() -komennon korvaamista. Muuttujaa voidaan myöhemmin käyttää tarpeen mukaan.

Argumenttien siirtäminen bashitoimintoihin

Jos haluat siirtää minkä tahansa määrän argumentteja bash-funktiolle, laita ne heti funktion nimen jälkeen, erotettuna välilyönnillä. On hyvä käytäntö lainata argumentit kaksinkertaisesti, jotta vältetään väitteen vääristyminen siinä olevien välilyöntien kanssa.

  • Lähetyt parametrit ovat $1 , $2 , $3 , $3 $n , joka vastaa parametrin sijaintia funktion nimen jälkeen. $0 -muuttuja on varattu toiminnon nimelle. $# -Muuttuja pitää sisällään parametrien / argumenttien määrän, $* ja $@ muuttujat sisältävät kaikki funktiolle siirretyt sijaintiparametrit / argumentit.
    • Kun kaksoislainataan, "$*" laajenee yhdeksi välilyönnillä erotettuun merkkijonoon (IFS: n ensimmäinen merkki) - "$1 $2 $n" .Kun kaksoismerkinnässä "$@" laajenee erillisiin merkkijonoihin - "$1" "$2" "$n" .Jos ei noteerattu, $* ja $@ ovat samat.

Tässä on esimerkki:

~ / Passing_arguments.sh

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

Hello Joe

johtopäätös

Bash-toiminto on uudelleenkäytettävän koodin lohko, joka on suunniteltu suorittamaan tietty toiminto. Kun funktio on määritetty, sitä voidaan kutsua useita kertoja komentosarjan sisällä.

Voit myös lukea siitä, kuinka Bash-toimintoa käytetään ikimuistoisen pikakomennon luomiseen pidempään komentoon.

bash-terminaali