Android

Bash-funktioner

Video Matematik Differentialkvotient for lineære funktioner

Video Matematik Differentialkvotient for lineære funktioner

Indholdsfortegnelse:

Anonim

En Bash-funktion er i det væsentlige et sæt kommandoer, der kan kaldes adskillige gange. Formålet med en funktion er at hjælpe dig med at gøre dine bash-scripts mere læsbare og undgå at skrive den samme kode igen og igen.

Sammenlignet med de fleste programmeringssprog er Bash-funktioner noget begrænset. I denne tutorial vil vi dække det grundlæggende i Bash-funktioner og vise dig, hvordan du bruger dem i dine shell-scripts.

Bash-funktionserklæring

Syntaxen til at erklære en bash-funktion er meget enkel. De kan deklareres i to forskellige formater:

  1. Det første format starter med funktionsnavnet efterfulgt af parenteser. Dette er det foretrukne og mere anvendte format.

    function_name () { commands }

    Single line version:

    function_name () { commands; }

    Det andet format starter med det reserverede function efterfulgt af funktionsnavnet.

    function function_name { commands }

    Single line version:

    function function_name { commands; }

Få punkter, der skal bemærkes:

  • Kommandolisten mellem krøllede seler {} er funktionen. De krøllede seler, der omgiver funktionskroppen, skal adskilles fra kroppen ved mellemrum eller nye linjer. Definition af en funktion udfører den ikke. For at påkalde en bash-funktion skal du blot bruge funktionsnavnet. Kommandoer mellem de krøllede seler udføres, når funktionen kaldes i shell-scriptet. Funktionsdefinitionen skal placeres inden eventuelle opkald til funktionen. Når der bruges en-linjes “komprimerede” funktioner, en semikolon ; skal følge den sidste kommando i funktionen. Du skal altid prøve at holde dine funktionsnavne beskrivende.

For at forstå dette bedre skal du tage et kig på følgende eksempel:

~ / Hello_world.sh

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

Lad os analysere koden linje for linje:

  • I linje 3 definerer vi funktionen ved at give den et navn og åbne den krøllede stag { der markerer starten af ​​funktionens krop. Linie 4 er funktionskroppen. Funktionskroppen kan indeholde flere kommandoer og variabel erklæringer. hello_world 5 , den lukke krøllede beslag } , definerer slutningen af hello_world funktionen. I linje 7 udfører vi funktionen. Du kan udføre funktionen så mange gange du har brug for.

Hvis du kører scriptet, udskrives det hello, world .

Variabler Omfang

Globale variabler er variabler, der kan fås adgang til hvor som helst i scriptet uanset omfanget. I Bash defineres alle variabler som standard som globale, selvom deklareres inden for funktionen.

Lokale variabler kan deklareres i funktionslegemet med det local nøgleord og kan kun bruges inden for denne funktion. Du kan have lokale variabler med samme navn i forskellige funktioner.

For bedre at illustrere, hvordan variablerne fungerer i Bash, lad os overveje et eksempel:

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

Scriptet starter med at definere to globale variabler var1 og var2 . Derefter en funktion, der indstiller en lokal variabel var1 og ændrer den globale variabel var2 .

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

Fra output ovenfor kan vi konkludere, at:

  • Hvis du indstiller en lokal variabel i funktionslegemet med samme navn som en eksisterende global variabel, vil den have forrang for den globale variabel. Globale variabler kan ændres fra funktionen.

Returværdier

I modsætning til funktioner i "rigtige" programmeringssprog tillader Bash-funktioner ikke dig at returnere en værdi, når du ringer til den. Når en bash-funktion er afsluttet, er dens returneringsværdi status for den sidste sætning, der er udført i funktionen, 0 for succes og ikke-nul decimal i området 1 - 255 for fejl.

Returstatus kan specificeres ved hjælp af return , og det tildeles variablen $? . return erklæringen afslutter funktionen. Du kan tænke på det som funktionens exit-status.

~ / Return_values.sh

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

some result 55

For faktisk at returnere en vilkårlig værdi fra en funktion, er vi nødt til at bruge andre metoder. Den enkleste mulighed er at tildele resultatet af funktionen til en global variabel:

~ / Return_values.sh

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

some result

En anden, bedre mulighed for at returnere en værdi fra en funktion er at sende værdien til stdout ved hjælp af ekko eller printf som vist nedenfor:

~ / Return_values.sh

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

some result

I stedet for blot at udføre den funktion, der udskriver meddelelsen til stdout, tildeler vi funktionsoutput til func_result variablen ved hjælp af kommandosubstitutionen $() . Variablen kan senere bruges efter behov.

Overførsel af argumenter til bash-funktioner

For at videregive et hvilket som helst antal argumenter til bash-funktionen skal du blot placere dem lige efter funktionens navn adskilt med et mellemrum. Det er en god praksis at dobbeltcitere argumenterne for at undgå forkert fordeling af et argument med mellemrum i det.

  • De bestilte parametre er $1 , $2 , $3 $n , svarende til parameterens placering efter funktionens navn. $0 variablen er forbeholdt funktionens navn $# Variablen $# indeholder antallet af positionsparametre / argumenter, der er sendt til funktion. Variablerne $* og $@ indeholder alle positionsparametre / argumenter, der er videregivet til funktionen.
    • Når det dobbeltciteres, udvides "$*" til en enkelt streng adskilt med mellemrum (den første karakter af IFS) - "$1 $2 $n" Når dobbeltciteret udvides "$@" til separate strenge - "$1" "$2" "$n" Når ikke dobbeltciteret, er $* og $@ de samme.

Her er et eksempel:

~ / Passing_arguments.sh

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

Hello Joe

Konklusion

En Bash-funktion er en blok genanvendelig kode designet til at udføre en bestemt operation. Når den er defineret, kan funktionen kaldes flere gange i et script.

Du vil måske også læse om, hvordan du bruger en Bash-funktion til at oprette en mindeværdig genvejskommando til en længere kommando.

bash terminal