Bash vs Python для DevOps инженеров и системных администраторов
Innholdsfortegnelse:
- Bash-funksjonserklæring
- Variabler Omfang
- Returner verdier
- Overfører argumenter til bash-funksjoner
- Konklusjon
En Bash-funksjon er egentlig et sett med kommandoer som kan kalles flere ganger. Formålet med en funksjon er å hjelpe deg med å gjøre bask-skriptene mer leselige og å unngå å skrive den samme koden om og om igjen.
Sammenlignet med de fleste programmeringsspråk, er bash-funksjoner noe begrenset. I denne opplæringen vil vi dekke det grunnleggende om Bash-funksjoner og vise deg hvordan du bruker dem i skallskriptene dine.
Bash-funksjonserklæring
Syntaksen for å erklære en bash-funksjon er veldig enkel. De kan deklareres i to forskjellige formater:
-
Det første formatet starter med funksjonsnavnet, etterfulgt av parenteser. Dette er det foretrukne og mer brukte formatet.
function_name () { commands }
Enkeltlinjeversjon:
function_name () { commands; }
Det andre formatet starter med
function
reservert ord etterfulgt av funksjonsnavnet.function function_name { commands }
Enkeltlinjeversjon:
function function_name { commands; }
Få poeng å merke seg:
- Kommandolisten mellom krøllete seler
{}
er hoveddelen av funksjonen. De krøllete selene som omgir funksjonslegemet, må skilles fra kroppen ved mellomrom eller nye linjer. Definisjon av en funksjon utfører ikke den. For å påkalle en bash-funksjon bruker du bare funksjonsnavnet. Kommandoer mellom de krøllete selene utføres når funksjonen kalles i shell-skriptet. Funksjonsdefinisjonen må plasseres før eventuelle anrop til funksjonen. Når du bruker en linje "komprimerte" funksjoner, en semikolon;
må følge den siste kommandoen i funksjonen. Du bør alltid prøve å holde funksjonsnavnene beskrivende.
For å forstå dette bedre, ta en titt på følgende eksempel:
~ / Hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
La oss analysere koden linje for linje:
- I linje
3
definerer vi funksjonen ved å gi den et navn, og åpner den krøllete selen{
som markerer starten på funksjonens kropp. Linje4
er funksjonskroppen. Funksjonskroppen kan inneholde flere kommandoer og variabel erklæringer. Linje5
, den lukkede krøllebraketten}
, definerer slutten avhello_world
funksjonen. I linje7
utfører vi funksjonen. Du kan utføre funksjonen så mange ganger du trenger.
Hvis du kjører skriptet, vil det trykke
hello, world
.
Variabler Omfang
Globale variabler er variabler som du kan få tilgang til hvor som helst i skriptet uansett omfang. I Bash er alle variabler som standard definert som globale, selv om deklarert i funksjonen.
Lokale variabler kan deklareres i funksjonsorganet med det
local
nøkkelordet og kan bare brukes inne i den funksjonen. Du kan ha lokale variabler med samme navn i forskjellige funksjoner.
For å bedre illustrere hvordan variabler omfanget fungerer i Bash, la oss vurdere 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"
Skriptet starter med å definere to globale variabler
var1
og
var2
. Deretter en funksjon som setter en lokal variabel
var1
og endrer den globale variabelen
var2
.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
Fra utgangen over kan vi konkludere med at:
- Hvis du angir en lokal variabel i funksjonsdelen med samme navn som en eksisterende global variabel, vil den ha forrang for den globale variabelen. Globale variabler kan endres fra funksjonen.
Returner verdier
I motsetning til funksjoner i “ekte” programmeringsspråk, lar ikke Bash-funksjonene deg returnere en verdi når du ringer. Når en bash-funksjon er fullført, er dens returverdi status for den siste uttalelsen som ble utført i funksjonen,
0
for suksess og ikke-null desimalnummer i området 1 - 255 for feil.
Returstatusen kan spesifiseres ved å bruke retursøkkelordet, og det tilordnes variabelen
$?
.
return
statementet avslutter funksjonen. Du kan tenke på det som funksjonens utgangsstatus.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
For å faktisk returnere en vilkårlig verdi fra en funksjon, må vi bruke andre metoder. Det enkleste alternativet er å tilordne resultatet av funksjonen til en global variabel:
~ / Return_values.sh
#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result
some result
Et annet, bedre alternativ for å returnere en verdi fra en funksjon er å sende verdien til
stdout
ved hjelp av ekko eller
printf
som vist nedenfor:
#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result
some result
I stedet for å bare utføre funksjonen som vil skrive ut meldingen til stdout, tilordner vi funksjonsutgangen til
func_result
variabelen ved å bruke kommandosubstitusjonen
$()
. Variabelen kan senere brukes etter behov.
Overfører argumenter til bash-funksjoner
For å overføre et hvilket som helst antall argumenter til bash-funksjonen, plasser dem rett etter funksjonens navn, atskilt med et mellomrom. Det er en god praksis å dobbelt sitere argumentene for å unngå feilparing av et argument med mellomrom i det.
- De passerte parameterne er
$1
,$2
,$3
…$n
, tilsvarer parameterens plassering etter funksjonens navn.$0
variabelen er reservert for funksjonens navn.$#
-Variabelen inneholder antall posisjonsparametere / argumenter som er gitt til funksjon. Variablene$*
og$@
inneholder alle posisjonsparametere / argumenter som er sendt til funksjonen.- Når det er dobbelt sitert, utvides
"$*"
til en enkelt streng skilt med mellomrom (det første tegnet til IFS) -"$1 $2 $n"
Når dobbelt sitert, utvides"$@"
til separate strenger -"$1" "$2" "$n"
Når ikke det er dobbelt sitert, er$*
og$@
de samme.
- Når det er dobbelt sitert, utvides
Her er et eksempel:
~ / Passing_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Konklusjon
En Bash-funksjon er en blokk med gjenbrukbar kode designet for å utføre en bestemt operasjon. Når den er definert, kan funksjonen kalles flere ganger i et skript.
Det kan også være lurt å lese om hvordan du bruker en Bash-funksjon til å lage en minneverdig snarveikommando for en lengre kommando.
bash terminalMicrosoft Research Asia Hosts Gates på 10 år Bash

Microsoft Research Asia har vokst fra et dusin mennesker i 1998 til over 350 et tiår senere.
Slik kjører du Bash på Ubuntu på Windows 10

Aktivering av Windows Subsystem for Linux vil tillate deg å kjøre Bash på Ubuntu på Windows 10, Bash-skript , Linux-kommandolinjeverktøy, Linux-første verktøy.
Bash-matriser

Arrays er en av de mest brukte og grunnleggende datastrukturer. I denne artikkelen skal vi dekke Bash-matriser, og forklare hvordan du bruker dem i Bash-skriptene dine.