Šioje temoje pademonstravome bash funkcijų pagrindus ir jų veikimą naudojant bash apvalkalo scenarijus.
Bash scenarijaus funkcijos yra puiki galimybė pakartotinai naudoti kodą. Bash funkcija gali būti apibrėžta kaip komandų rinkinys, kuris gali būti iškviestas kelis kartus per bash scenarijų. Bash funkcijos tikslas yra padėti jums padaryti jūsų scenarijus lengviau skaitomus ir nerašyti to paties kodo vėl ir vėl. Tai taip pat leidžia kūrėjams suskaidyti sudėtingą ir ilgą kodą į mažas dalis, kurias galima iškviesti, kai tik reikia. Funkcijos gali būti iškviečiamos bet kada ir pakartotinai, o tai leis mums pakartotinai naudoti, optimizuoti ir sumažinti kodą.
Toliau pateikiami keli pagrindiniai bash funkcijų punktai:
- Funkcija turi būti deklaruota apvalkalo scenarijuje, kad galėtume ją naudoti.
- Argumentus galima perduoti funkcijoms ir pasiekti funkcijos viduje kaip , ir kt.
- Vietiniai kintamieji gali būti priskirti funkcijai, o tokių kintamųjų apimtis bus tik ta konkreti funkcija.
- Įtaisytosios Bash shell komandos gali būti nepaisomos naudojant funkcijas.
Sintaksė
Bash funkcijos deklaravimo sintaksė gali būti apibrėžta dviem formatais:
1. Pirmasis metodas prasideda funkcijos pavadinimu, po kurio rašomi skliaustai. Tai yra labiausiai pageidaujamas ir dažniausiai naudojamas metodas:
function_name () { commands }
Vienos eilutės versiją galima paminėti taip:
function_name () { commands; }
2. Antrasis metodas prasideda funkcijos rezervuotu žodžiu, po kurio nurodomas funkcijos pavadinimas:
verilog bylos pareiškimas
function function_name { commands }
Vienos eilutės versiją galima paminėti taip:
function function_name { commands; }
Palyginti su daugeliu programavimo kalbų, „Bash“ funkcijos yra šiek tiek ribotos. Supraskime sąvoką naudodamiesi keletu pavyzdžių:
Pavyzdys: 1 būdas
#!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP
Išvestis
Welcome to Javatpoint.
Pavyzdys: 2 būdas
#!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP
Išvestis
Welcome to Javatpoint.
Argumentai
Kaip ir dauguma programavimo kalbų, mes taip pat galime perduoti argumentus ir apdoroti duomenis naudodami bash funkcijas. Duomenis į funkciją galime įterpti panašiai kaip komandų eilutės argumentus į bash scenarijų.
įterpti vandens ženklą į žodį
Norėdami perduoti bet kokį argumentų skaičių funkcijai bash, turime juos įterpti iškart po funkcijos pavadinimo. Turime taikyti tarpus tarp funkcijos pavadinimo ir argumentų. Taip pat bus puikus pasirinkimas aplink argumentus naudoti dvigubas kabutes, kad būtų išvengta neteisingo argumentų suskaidymo su tarpais.
Toliau pateikiami keli pagrindiniai argumentų perdavimo bash funkcijoms punktai:
- Pateikti argumentai pasiekiami kaip , , ... $n, atitinkantys argumentų vietą po funkcijos pavadinimo.
kintamasis yra rezervuotas funkcijos pavadinimui.Šioje temoje pademonstravome bash funkcijų pagrindus ir jų veikimą naudojant bash apvalkalo scenarijus.
Bash scenarijaus funkcijos yra puiki galimybė pakartotinai naudoti kodą. Bash funkcija gali būti apibrėžta kaip komandų rinkinys, kuris gali būti iškviestas kelis kartus per bash scenarijų. Bash funkcijos tikslas yra padėti jums padaryti jūsų scenarijus lengviau skaitomus ir nerašyti to paties kodo vėl ir vėl. Tai taip pat leidžia kūrėjams suskaidyti sudėtingą ir ilgą kodą į mažas dalis, kurias galima iškviesti, kai tik reikia. Funkcijos gali būti iškviečiamos bet kada ir pakartotinai, o tai leis mums pakartotinai naudoti, optimizuoti ir sumažinti kodą.
Toliau pateikiami keli pagrindiniai bash funkcijų punktai:
- Funkcija turi būti deklaruota apvalkalo scenarijuje, kad galėtume ją naudoti.
- Argumentus galima perduoti funkcijoms ir pasiekti funkcijos viduje kaip $1, $2 ir kt.
- Vietiniai kintamieji gali būti priskirti funkcijai, o tokių kintamųjų apimtis bus tik ta konkreti funkcija.
- Įtaisytosios Bash shell komandos gali būti nepaisomos naudojant funkcijas.
Sintaksė
Bash funkcijos deklaravimo sintaksė gali būti apibrėžta dviem formatais:
1. Pirmasis metodas prasideda funkcijos pavadinimu, po kurio rašomi skliaustai. Tai yra labiausiai pageidaujamas ir dažniausiai naudojamas metodas:
function_name () { commands }
Vienos eilutės versiją galima paminėti taip:
function_name () { commands; }
2. Antrasis metodas prasideda funkcijos rezervuotu žodžiu, po kurio nurodomas funkcijos pavadinimas:
function function_name { commands }
Vienos eilutės versiją galima paminėti taip:
function function_name { commands; }
Palyginti su daugeliu programavimo kalbų, „Bash“ funkcijos yra šiek tiek ribotos. Supraskime sąvoką naudodamiesi keletu pavyzdžių:
Pavyzdys: 1 būdas
#!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP
Išvestis
Welcome to Javatpoint.
Pavyzdys: 2 būdas
#!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP
Išvestis
Welcome to Javatpoint.
Argumentai
Kaip ir dauguma programavimo kalbų, mes taip pat galime perduoti argumentus ir apdoroti duomenis naudodami bash funkcijas. Duomenis į funkciją galime įterpti panašiai kaip komandų eilutės argumentus į bash scenarijų.
Norėdami perduoti bet kokį argumentų skaičių funkcijai bash, turime juos įterpti iškart po funkcijos pavadinimo. Turime taikyti tarpus tarp funkcijos pavadinimo ir argumentų. Taip pat bus puikus pasirinkimas aplink argumentus naudoti dvigubas kabutes, kad būtų išvengta neteisingo argumentų suskaidymo su tarpais.
Toliau pateikiami keli pagrindiniai argumentų perdavimo bash funkcijoms punktai:
- Pateikti argumentai pasiekiami kaip $1, $2, $3 ... $n, atitinkantys argumentų vietą po funkcijos pavadinimo.
- $0 kintamasis yra rezervuotas funkcijos pavadinimui.
- Kintamasis $# naudojamas funkcijai pateiktų pozicinių argumentų/parametrų skaičiui laikyti.
- Kintamieji $* ir $@ naudojami visiems funkcijai pateiktiems argumentams/parametrams laikyti.
- Kai $* naudojamas su dvigubomis kabutėmis (t. y. „$*“ ), jis išplečiamas iki vienos eilutės, atskirtos tarpu. Pavyzdžiui, „1 USD 2 USD ir tt“.
- Kai $@ naudojamas su dvigubomis kabutėmis (t. y. „$@“), jis išplečiamas iki atskiros eilutės. Pavyzdžiui, „$1“, „$2“, „$n“ ir kt.
- Kai $* ir $# nenaudojami su dvigubomis kabutėmis, jie abu yra vienodi.
Toliau pateikiamas kodas, iliustruojantis procedūrą, kaip perduoti argumentus funkcijoms ir pasiekti argumentus funkcijos viduje.
Bash scenarijus
#!/bin/bash #Script to pass and access arguments function_arguments() { echo $1 echo $2 echo $3 echo $4 echo $5 } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.'
Išvestis
Šiame scenarijuje pridėjome reikšmes „We“, „welcome“, „you“, „on“ ir „Javatpoint“, kai iškvietėme function_arguments. Tos vertybės perduodamos funkcija_argumentai kaip parametrai ir saugomi vietiniame kintamajame. Tačiau, skirtingai nuo kitų kalbų, vertėjas išsaugo perduotas reikšmes į iš anksto nustatytus kintamuosius, kurie vėliau įvardijami pagal perdavimo parametrų seką.
Pavyzdžiui,
'Mes' žodis išsaugomas kintamajame 1 .
'Sveiki' žodis išsaugomas kintamajame 2 .
'tu' žodis išsaugomas kintamajame 3 .
'įjungta' žodis išsaugomas kintamajame 4 .
'Javatpoint' žodis išsaugomas kintamajame 5 .Kintamoji apimtis
Visuotiniai kintamieji apibrėžiami kaip kintamieji, kuriuos galima pasiekti bet kurioje scenarijaus vietoje, neatsižvelgiant į taikymo sritį. Pagal numatytuosius nustatymus visi kintamieji yra apibrėžiami kaip pasauliniai kintamieji, net jei jie yra deklaruoti funkcijoje. Taip pat galime sukurti kintamuosius kaip vietinį kintamąjį. Vietiniai kintamieji gali būti deklaruojami funkcijos korpuse su ?local? raktinį žodį, kai jie priskiriami pirmą kartą. Jie pasiekiami tik toje funkcijoje. Galime sukurti vietinius kintamuosius tuo pačiu pavadinimu skirtingose funkcijose. Norėdami pridėti vietinį kintamąjį, galime naudoti šią sintaksę:
local var_name=
Norėdami geriau suprasti, kaip „Bash Scripting“ veikia kintamųjų apimtis, peržiūrėkite šį pavyzdį:
Bash scenarijus
#!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.'
Išvestis
Kalbant apie išvestį, jei funkcijos turinyje nustatysime vietinį kintamąjį tokiu pačiu pavadinimu kaip ir esamas pasaulinis kintamasis, jis turės viršenybę prieš visuotinį kintamąjį. Visuotinius kintamuosius galima keisti funkcijoje.
Grąžinamos vertės
Dauguma programavimo kalbų turi funkcijų vertės grąžinimo koncepciją. Tai reiškia, kad funkcija turi siųsti duomenis atgal į pradinę skambinimo vietą. Skirtingai nuo funkcijų „tikrosiose“ programavimo kalbose, „Bash“ funkcija nepalaiko reikšmės grąžinimo, kai ji iškviečiama. Tačiau jie leidžia mums nustatyti grąžinimo būseną, panašią į tai, kaip programa arba komanda išeina su išėjimo būsena. Kai bash funkcija baigiama, jos grąžinamoji reikšmė yra paskutinio funkcijoje įvykdyto sakinio būsena. Jis grąžina 0 sėkmės būsenai ir ne nulį dešimtainį skaičių nuo 1 iki 255, jei nesėkmė.
Grąžinimo būseną galima nurodyti naudojant 'return' raktinį žodį ir ji priskiriama kintamajam $?. Grįžimo sakinys užbaigia funkciją ir veikia kaip funkcijos išėjimo būsena.
Pavyzdžiui, apsvarstykite šį kodą:
Bash scenarijus
#!/bin/bash #Setting up a return status for a function print_it () { echo Hello $1 return 5 } print_it User print_it Reader echo The previous function returned a value of $?
Išvestis
Kitas geresnis būdas grąžinti reikšmę iš funkcijos yra nusiųsti reikšmę į stdout naudojant aidas arba printf komandas, kaip parodyta žemiau:
Bash scenarijus
#!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet
Išvestis
Welcome to Javatpoint.
Viršančios komandos
Turime galimybę nepaisyti bash komandas sukurdami funkciją tokiu pačiu pavadinimu kaip ir komanda, kurią ketiname nepaisyti. Pavyzdžiui, jei norime nepaisyti komandos „echo“, turime sukurti funkciją pavadinimu „echo“.
Ši bash komandų nepaisymo koncepcija gali būti naudinga kai kuriais atvejais, pavyzdžiui, kai norime naudoti komandą su konkrečiomis parinktimis. Be to, kai nemėgstame scenarijuje keletą kartų pateikti visos komandos su parinktimis. Tokiais atvejais galime nepaisyti integruotos bash komandos su parinktimis. Dabar supraskime Bash Shell Scripting komandų nepaisymo koncepciją, naudodamiesi kai kuriais pavyzdžiais:
Pavyzdys
Šiame pavyzdyje mes nepaisėme komandos „echo“ ir prie komandos „echo“ pridėjome laiko žymą argumento forma.
Bash scenarijus
#!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo $1 } echo 'Welcome to Javatpoint.'
Išvestis
Išvada
Šioje temoje pademonstravome apie Bash funkciją. „Bash“ funkcija laikoma daugkartinio kodo bloku, sukurtu konkrečiai operacijai atlikti. Kai jis yra apibrėžtas, jis gali būti iškviestas kelis kartus per scenarijų.
- Kintamasis $# naudojamas funkcijai pateiktų pozicinių argumentų/parametrų skaičiui laikyti.
- Kintamieji $* ir $@ naudojami visiems funkcijai pateiktiems argumentams/parametrams laikyti.
- Kai $* naudojamas su dvigubomis kabutėmis (t. y. „$*“ ), jis išplečiamas iki vienos eilutės, atskirtos tarpu. Pavyzdžiui, „1 USD 2 USD ir tt“.
- Kai $@ naudojamas su dvigubomis kabutėmis (t. y. „$@“), jis išplečiamas iki atskiros eilutės. Pavyzdžiui, „“, „“, „$n“ ir kt.
- Kai $* ir $# nenaudojami su dvigubomis kabutėmis, jie abu yra vienodi.
Toliau pateikiamas kodas, iliustruojantis procedūrą, kaip perduoti argumentus funkcijoms ir pasiekti argumentus funkcijos viduje.
Bash scenarijus
#!/bin/bash #Script to pass and access arguments function_arguments() { echo echo echo echo echo } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.'
Išvestis
Šiame scenarijuje pridėjome reikšmes „We“, „welcome“, „you“, „on“ ir „Javatpoint“, kai iškvietėme function_arguments. Tos vertybės perduodamos funkcija_argumentai kaip parametrai ir saugomi vietiniame kintamajame. Tačiau, skirtingai nuo kitų kalbų, vertėjas išsaugo perduotas reikšmes į iš anksto nustatytus kintamuosius, kurie vėliau įvardijami pagal perdavimo parametrų seką.
Pavyzdžiui,
alter pridėti stulpelį orakulas
'Mes' žodis išsaugomas kintamajame 1 .
'Sveiki' žodis išsaugomas kintamajame 2 .
'tu' žodis išsaugomas kintamajame 3 .
'įjungta' žodis išsaugomas kintamajame 4 .
'Javatpoint' žodis išsaugomas kintamajame 5 .
Kintamoji apimtis
Visuotiniai kintamieji apibrėžiami kaip kintamieji, kuriuos galima pasiekti bet kurioje scenarijaus vietoje, neatsižvelgiant į taikymo sritį. Pagal numatytuosius nustatymus visi kintamieji yra apibrėžiami kaip pasauliniai kintamieji, net jei jie yra deklaruoti funkcijoje. Taip pat galime sukurti kintamuosius kaip vietinį kintamąjį. Vietiniai kintamieji gali būti deklaruojami funkcijos korpuse su ?local? raktinį žodį, kai jie priskiriami pirmą kartą. Jie pasiekiami tik toje funkcijoje. Galime sukurti vietinius kintamuosius tuo pačiu pavadinimu skirtingose funkcijose. Norėdami pridėti vietinį kintamąjį, galime naudoti šią sintaksę:
local var_name=
Norėdami geriau suprasti, kaip „Bash Scripting“ veikia kintamųjų apimtis, peržiūrėkite šį pavyzdį:
Bash scenarijus
pelė ir pelės tipai
#!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.'
Išvestis
Kalbant apie išvestį, jei funkcijos turinyje nustatysime vietinį kintamąjį tokiu pačiu pavadinimu kaip ir esamas pasaulinis kintamasis, jis turės viršenybę prieš visuotinį kintamąjį. Visuotinius kintamuosius galima keisti funkcijoje.
Grąžinamos vertės
Dauguma programavimo kalbų turi funkcijų vertės grąžinimo koncepciją. Tai reiškia, kad funkcija turi siųsti duomenis atgal į pradinę skambinimo vietą. Skirtingai nuo funkcijų „tikrosiose“ programavimo kalbose, „Bash“ funkcija nepalaiko reikšmės grąžinimo, kai ji iškviečiama. Tačiau jie leidžia mums nustatyti grąžinimo būseną, panašią į tai, kaip programa arba komanda išeina su išėjimo būsena. Kai bash funkcija baigiama, jos grąžinamoji reikšmė yra paskutinio funkcijoje įvykdyto sakinio būsena. Jis grąžina 0 sėkmės būsenai ir ne nulį dešimtainį skaičių nuo 1 iki 255, jei nesėkmė.
Grąžinimo būseną galima nurodyti naudojant 'return' raktinį žodį ir ji priskiriama kintamajam $?. Grįžimo sakinys užbaigia funkciją ir veikia kaip funkcijos išėjimo būsena.
Pavyzdžiui, apsvarstykite šį kodą:
Bash scenarijus
#!/bin/bash #Setting up a return status for a function print_it () { echo Hello return 5 } print_it User print_it Reader echo The previous function returned a value of $?
Išvestis
Kitas geresnis būdas grąžinti reikšmę iš funkcijos yra nusiųsti reikšmę į stdout naudojant aidas arba printf komandas, kaip parodyta žemiau:
mašinraštis kiekvienas
Bash scenarijus
#!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet
Išvestis
Welcome to Javatpoint.
Viršančios komandos
Turime galimybę nepaisyti bash komandas sukurdami funkciją tokiu pačiu pavadinimu kaip ir komanda, kurią ketiname nepaisyti. Pavyzdžiui, jei norime nepaisyti komandos „echo“, turime sukurti funkciją pavadinimu „echo“.
Ši bash komandų nepaisymo koncepcija gali būti naudinga kai kuriais atvejais, pavyzdžiui, kai norime naudoti komandą su konkrečiomis parinktimis. Be to, kai nemėgstame scenarijuje keletą kartų pateikti visos komandos su parinktimis. Tokiais atvejais galime nepaisyti integruotos bash komandos su parinktimis. Dabar supraskime Bash Shell Scripting komandų nepaisymo koncepciją, naudodamiesi kai kuriais pavyzdžiais:
Pavyzdys
Šiame pavyzdyje mes nepaisėme komandos „echo“ ir prie komandos „echo“ pridėjome laiko žymą argumento forma.
Bash scenarijus
#!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo } echo 'Welcome to Javatpoint.'
Išvestis
Išvada
Šioje temoje pademonstravome apie Bash funkciją. „Bash“ funkcija laikoma daugkartinio kodo bloku, sukurtu konkrečiai operacijai atlikti. Kai jis yra apibrėžtas, jis gali būti iškviestas kelis kartus per scenarijų.