Bash Functions Tutorial

Bash Functions Tutorial
En bash -funksjon er en samling kommandoer som kan utføres gjentatte ganger. Målet med funksjonen er å gjøre bashskriptene lettere å lese og forhindre deg i å skrive det samme skriptet ofte. Bash -funksjoner er betydelig begrenset i forhold til de flertallet av programmeringsspråk. For utførelse av trinn-for-trinn inneholder denne filen forskjellige kommandoer. Selv om disse kommandoene bare kan legges inn i kommandolinjen, er det mer praktisk å lagre alle sammenkoblede kommandoer for en gitt operasjon i en enkelt fil fra et gjenbrukbarhetsperspektiv. Vi kan bruke den filen til å kjøre det spesifiserte settet med kommandoer, en eneste tid eller flere ganger, avhengig av våre behov. Vi vil gå gjennom grunnleggende basefunksjoner i denne leksjonen og demonstrere hvordan du bruker dem i skallskript.

Eksempel 1

En funksjon er en del av koden som kan kalles flere ganger for å utføre spesifikke oppgaver i programmering. Kodelengden reduseres, og programmodularitet er gitt. Den mest grunnleggende illustrasjonen av en funksjons applikasjon i bash -skripting vises i følgende:

#!/bin/bash
BashFunction ()
ekko hei, mine Linux -venner

Bashfunction

I forrige skript har vi definert funksjonen Bashfunction. Inne i den har vi en Echo -uttalelse. Deretter kalte vi funksjonen Bashfunction For å utføre funksjonen.

Utgangen fra Bash Basic -funksjonen skrives ut på terminalen:

linuxhint@hp34: ~ $ chmod +x test.sh; ./test.sh
Hei, Linux -vennene mine
linuxhint@hp34: ~ $

Eksempel 2

Vi kan passere argumenter og behandle data med bash -funksjoner som på andre programmeringsspråk. I likhet med å passere kommandolinjeparametere til et bash -skript, kan vi legge inn data i funksjonen. Vi må legge til parametrene umiddelbart etter funksjonsnavnet for å gi et hvilket som helst antall argumenter til bash -funksjonen. Når vi ringer funksjonen, kan vi passere argumentene direkte og bruke verdiene $ 1, $ 2, ... $ n for å få tilgang til dem inne i funksjonen.

#!/bin/bash
multiply_two_numbers ()
Lokalt produkt = $ (($ 1*$ 2))
Echo -produkt på $ 1 og $ 2 er $ produkt

multiply_two_numbers 5 2

I forrige skript har vi laget funksjonen multiply_two_numbers. I funksjonen har vi laget variabelen produkt og tildelt ligningen av produktet som skal beregnes. Echo -kommandoen brukes deretter til å skrive ut resultatet av beregningen for produktet av to verdier. Etter det har vi gitt de to argumentene, 5 og 2, tildelt funksjonen multiply_two_numbers.

Terminalskallet etter utførelsen av skriptet er vist i følgende bilde:

linuxhint@hp34: ~ $ chmod +x test.sh; ./test.sh
produkt av 5 og 2 er 10
linuxhint@hp34: ~ $

Eksempel 3

De fleste programmeringsspråk støtter ideen om funksjoner som returnerer en verdi. Det innebærer at funksjonen må returnere dataene til stedet den kalles. Bash -funksjoner støtter ikke å returnere en verdi når de kalles, i motsetning til funksjoner i ekte programmeringsspråk. Imidlertid gir de oss muligheten til å etablere en returstatus, som fungerer på samme måte som utgangsstatus som brukes av et program eller kommando for å avslutte.

Variabelen $? tildeles ordet komme tilbake, som kan brukes for å beskrive returets nåværende tilstand. Funksjonen blir avsluttet med returerklæringen, som også fungerer som utgangsstatus for funksjonen.

#!/bin/bash
my_function ()
Retur 14

my_function
ekko Verdien som returneres er $?

I manuset har vi først etablert en funksjon my_function. I funksjonen har vi et returnøkkelord som tar verdien 14. Deretter påkalte vi funksjonen my_function, som har en ekko -uttalelse som vil returnere verdien til $?.

Bash -skriptet Utgår verdien som er spesifisert til en returkommando som følger:

linuxhint@hp34: ~ $ chmod +x test.sh; ./test.sh
Verdien som returneres er 14
linuxhint@hp34: ~ $

Eksempel 4

I et skript er en global variabel en variabel som kan nås fra noe sted og har ingen begrensninger i omfanget. Selv om en variabel er deklarert i en funksjon, er den automatisk definert som en global variabel. Variabler kan også opprettes lokalt. Når de har blitt tildelt for første gang, kan lokale variabler spesifiseres i funksjonskroppen ved å bruke nøkkelordet lokal. Bare den funksjonen lar deg få tilgang til dem. Det samme navnet kan gis til lokale variabler som er opprettet i andre funksjoner.

#!/bin/bash
var1 = "Cat"
Animal_names_fun ()
Lokal var2 = "hund"
var3 = "sauer"
ekko "Navnet på First Animal er $ var1"
ekko "Navnet på Second Animal er $ var2"

Animal_names_fun
ekko "Navnet på First Animal er $ var1"
ekko "Navnet på First Animal er $ var2"
ekko "Navnet på First Animal er $ var3"

Bash -skriptet begynner med erklæringen om den globale variabelen var1 og initialiserer det med verdien av en streng. Deretter opprettet vi funksjonen Animal_names_fun. Til funksjonen Animal_names_fun, Vi har satt den lokale variabelen med nøkkelordet lokal og en global variabel. De lokale og globale variablene er blitt definert med navnene var2 og var3, Og vi har også satt verdiene deres. Deretter gjentok vi den globale variabelen var1 innenfor funksjonen og den lokale variabelen var2 innenfor funksjonen. Etter det kalte vi funksjonen Animal_names_fun og fikk tilgang til de globale variablene var1 og var3, som vanligvis utfører, men når vi prøver å få tilgang til den lokale variabelen Val2 Utenfor den spesifiserte funksjonen vil den returnere en tom verdi.

Du kan varsle utdataene fra å få tilgang til de lokale og globale variablene i bash -programmet som følger:

linuxhint@hp34: ~ $ chmod +x test.sh; ./test.sh
Navnet på det første dyret er katt
Navnet på det andre dyret er hund
Navnet på det første dyret er katt
Navnet på det første dyret er
Navnet på det første dyret er sau
linuxhint@hp34: ~ $

Eksempel 5

Ved å navngi en funksjon den samme som kommandoen vi ønsker å overstyre, kan vi velge å overstyre bash -kommandoene. For eksempel må vi skrive en funksjon som heter ekko Hvis vi har tenkt å overstyre Echo -kommandoen.

Denne ideen om å overstyre bash -kommandoer kan være nyttig under noen omstendigheter, for eksempel når vi ønsker å bruke en kommando med bestemte alternativer. I tillegg er det situasjoner når vi ikke vil gjenta hele kommandoen med alternativer i skriptet. Vi kan bruke alternativer for å endre den innebygde bash-kommandoen i disse situasjonene. La oss bruke et eksempel for å forstå ideen om å overstyre kommandoer i bash shell scripting:

#!/bin/bash
ekko ()
Builtin Echo -n 'Dato +"[%M-%D%H:%M:%S]"' ":"
Builtin Echo $ 1

ekko "Velkommen til bloggene mine.""

I forrige bash -skript har vi en funksjon ekko. Innenfor Echo-funksjonen overstyrer vi Echo-kommandoen og satte inn den innebygde tidsstempelmetoden som et argument til Echo-kommandoen.

Utgangen fra bash overstyringsfunksjonen vises i følgende bilde:

linuxhint@hp34: ~ $ chmod +x test.sh; ./test.sh
[12-06 15:54:50]: Velkommen til bloggene mine.
linuxhint@hp34: ~ $

Konklusjon

Vi diskuterte bash -funksjonen om dette emnet. En del av gjenbrukbar kode eksplisitt opprettet for en gitt oppgave kalles en bash -funksjon. Når den er definert, kan den brukes flere ganger i et skript. Bash engasjerer seg med operativsystemet for å gjennomføre kommandoer mottatt fra skallet etter å ha lest dem. Et fantastisk trekk ved bash er at den lar deg kombinere mange av kommandoene og funksjonene til et enkelt kjørbart skript, noe som gjør det lettere å organisere arbeidet ditt.