I shell-scripting spiller Bash if-udsagn en afgørende rolle ved at tillade programmører at skabe betingede eksekveringsstier baseret på forskellige situationer. Grundlæggende, hvis udsagn sætter os i stand til at træffe beslutninger inden for Bash-scripts, under hensyntagen til faktorer som testresultater, brugerinput eller systemtilstande. Det er ligesom en måde at navigere gennem forskellige muligheder.
Når du bruger Bash-scripting, følger en if-sætning en bestemt struktur. Det begynder typisk med "if" søgeord efterfulgt af tilstanden, der skal evalueres, "så” nøgleord, og en eller flere kommandoer til at udføre, hvis betingelsen er sand.
For at gøre tingene mere fleksible kan if-erklæringen også indeholde en valgfri "elif” (else if)-sætning, som kommer i spil, når startbetingelsen er falsk. Den giver os mulighed for at teste en yderligere betingelse og fortsætte i overensstemmelse hermed. Derudover kan if-sætningen have en valgfri "else"-sætning, som udføres, hvis ingen af betingelserne holder stik.
Ved at kombinere if-sætninger med andre Bash-kommandoer og funktioner i shell-scripting kan programmører lave avancerede scripts, der er i stand til at automatisere komplekse opgaver og processer. Bliv ved for at finde ud af mere om Bash if-sætningen, inklusive dens syntaks, use cases og eksempler!
Bash If Statement Syntaks
Bash-syntaks refererer til de regler, der styrer strukturen og grammatikken af kommandoer og scripts skrevet i Bash shell-sproget. Bash-syntaks inkluderer en række forskellige konstruktioner og elementer, såsom:
- Kommandoer: Dette er de individuelle eksekverbare programmer eller shell-indbyggede programmer, der bruges til at udføre specifikke opgaver. Du vil bruge det meste af tiden, du beskæftiger dig med Bash-programmering med disse dejlige linjer.
- Argumenter: Disse er værdier, der sendes til kommandoer for at specificere muligheder, parametre eller inputdata. Tænk på dem som betingelser, der er sat for en kommando for at specificere dens udførelsesparametre.
- Variabler: Dette er symboler, der repræsenterer værdier, der kan tildeles, manipuleres eller bruges i udtryk. De bruges almindeligvis til at bestemme de værdier, som både kommandoer og argumenter skal håndtere.
- Omdirigering: Dette er processen med at omdirigere input, output eller fejl til eller fra filer, enheder eller andre kommandoer. Uden disse er der en stor chance for, at dine kommandoer målretter mod den forkerte destination og ødelægger din kode.
- Rør: Dette er en mekanisme til at forbinde output fra en kommando til input fra en anden kommando. Disse bruges generelt til at udføre avancerede betingede kommandolinjer i store programmer og til at skabe sammenvævede kommandolinjer.
- Kontrolstrukturer: Disse er konstruktioner, der styrer strømmen af udførelse af kommandoer, såsom loops, conditionals og funktioner. Forståelse af kontrolstrukturen er nøglen til at lave nye kommandolinjer og giver endnu et niveau af dybde til din kode.
- Kommentarer: Disse er annoteringer, der ignoreres af skallen og bruges til at dokumentere kode eller give forklaringer. Disse er vigtige referencepunkter, når der udføres analyse og fejlfinding, især i gruppeprojekter.
Bash-syntaks skal være skrevet korrekt, for at skallen kan fortolke og udføre kommandoer. Syntaksfejl kan få skallen til at producere fejlmeddelelser eller uventet adfærd.
Her er Bash if-erklæringen i aktion:
if condition then command1 command2 ... commandN elif condition2 then commandA commandB ... commandC else commandX commandY ... commandZ fi
I det tilfælde, vi har her, refererer "betingelsen" til en test, der producerer et resultat af enten sandt eller falsk. Når betingelsen er sand, udføres de efterfølgende kommandoer, der er angivet efter "then" nøgleordet. Lad os nu sige, at vi ønsker at evaluere en yderligere betingelse i stedet for. Vi kan bruge nøgleordet "elif" til at gøre dette. Det giver mulighed for at overveje en anden mulighed. Nu, hvis ingen af betingelserne holder stik, kommer kommandoerne angivet efter "else" nøgleordet i spil. Det er som en tilbagefaldsplan. Til sidst, for at indikere konklusionen på if-sætningen, bruger vi nøgleordet "hvis".
Hvordan virker Bash-erklæringer?
Når det kommer til Bash-scripting, bliver if-sætningen ret praktisk til at styre scriptets flow baseret på resultatet af en betinget test. Dens formål drejer sig om at vurdere en tilstand og, hvis den viser sig at være sand, udføre et specifikt sæt kommandoer.
Lad os nu tage et glimt af, hvordan tingene normalt udvikler sig, når et if-udsagn kommer i spil i et Bash-manuskript. Scriptet tager et øjeblik at evaluere tilstanden nævnt i if-sætningen. Skulle betingelsen vise sig at være sand, finder de kommandoer, der er optaget i "da"-blokken, deres tur til at udføre.
Men hvis betingelsen tilfældigvis er falsk, fortsætter scriptet med at evaluere eventuelle yderligere elif-betingelser. Hvis nogen af disse betingelser holder stik, træder den tilsvarende elif-bloks kommandoer op for at udføres. I tilfælde, hvor ingen af betingelserne specificeret i if- og elif-sætningerne ser ud til at være sande, anerkender scriptet dette og fortsætter med at udføre de kommandoer, der er specificeret i else-blokken (hvis en else-blok er inkluderet).
I bund og grund tjener if-sætningen som et middel til at lette beslutningstagning i et script, hvilket gør det muligt for det at krydse forskellige udførelsesveje afhængigt af testens resultat. Selve testen kan tage forskellige faktorer i betragtning, såsom resultatet af en kommando eller den værdi, der er tildelt en variabel.
Bash hvis erklæring eksemplificeret
Lad os nu komme ud af grundlæggende teori og se, hvordan en Bash if-sætning kan bruges i en aktiv udvikling af kodning. Her er et eksempel, der viser, hvordan en Bash if-sætning fungerer:
#!/bin/bash # set a variable x=5 # evaluate the variable if [ $x -gt 4 ] then echo "x is greater than 4." else echo "x is less than or equal to 4." fi
I dette eksempel evaluerer if-sætningen værdien af variablen x. Hvis x er større end 4, udfører scriptet kommandoen til at udskrive "x er større end 4". Hvis x er mindre end eller lig med 4, udfører scriptet kommandoen til at udskrive "x er mindre end eller lig med 4".
Lær de forskellige Bash If-udsagn og relaterede kommandosyntaks at kende
Nu hvor du har en solid forståelse af det nøgne Bash If-udsagn, og hvordan det virker, lad os dykke dybere ned i variationerne og relaterede kommandoer og lære mere om Basic If-sætninger, Nested If-sætninger, Bash If Else, If Elif Else og Case-sætninger én efter én.
Grundlæggende If-erklæringer
Lad os starte med den grundlæggende bash if-erklæring. If-sætningen i Bash kontrollerer, om en betingelse er sand, og udfører en blok af relaterede koder i overensstemmelse hermed. Her er syntaksen:
if [ condition ] then commands fi
I det tilfælde, vi har her, evaluerer scriptet tilstanden, og hvis den holder, bliver de angivne kommandoer udført. Hvis betingelsen er falsk, flytter scriptet til den næste kommando uden at udføre blokken i "da"-sektionen.
Indlejrede If-udsagn
En indlejret if-sætning, som det kreative navn antyder, er en if-sætning, der er "indlejret" i en anden if-sætning. Denne indlejrede struktur giver mulighed for mere komplekse tests og analyser i et script. Her er et eksempel på en indlejret if-sætning:
if [ condition1 ]
then
if [ condition2 ]
then
commands
fi
fi
Du kan se i kommandoerne, at scriptet evaluerer betingelse1 som det første trin. Hvis betingelse1 er verificeret som sand, evaluerer den derefter betingelse2. Hvis betingelse2 også er sand, udfører scriptet de nødvendige kommandoer.
Bash If Else-udsagn
Bash if else-sætningen giver dig mulighed for at træffe beslutninger i dit script baseret på om en betingelse er sand eller falsk, hvilket giver mulighed for mere avanceret situationsbestemt kodeudførelse. Sådan ser strukturen ud:
if [ condition ] then commands1 else commands2 fi
Denne konstruktion sikrer, at hvis betingelsen holder, udfører dit script hurtigt "commands1". Men hvis betingelsen er falsk, skifter den til at udføre "kommandoer2".
Hvis Elif Else Udsagn
Nogle gange skal du overveje flere forhold og deres respektive resultater. If elif else-sætningen giver dig mulighed for at opnå netop det. Overhold følgende syntaks:
if [ condition1 ] then commands1 elif [ condition2 ] then commands2 else commands3 fi
Her evaluerer dit script først betingelse1. Hvis det er verificeret sandt; det vil hurtigt udføre kommandoer1. Men hvis betingelse1 er falsk, går dit script videre til at evaluere betingelse2. Hvis betingelse2 gælder, fortsætter den med at udføre kommandoer2. Og hvis både betingelse1 og betingelse2 viser sig at være falsk, vil dit script gå til alternativet, som udfører kommandoer3.
Sagsudtalelser
I Bash har du case-sætningen, som fungerer på samme måde som en switch-sætning, der findes i andre programmeringssprog. Det giver en måde at udføre forskellige sæt af kommandoer baseret på værdien af en variabel. Tag et kig på strukturen:
case expression in pattern1) commands1;; pattern2) commands2;; pattern3) commands3;; *) default commands;; esac
Her evaluerer scriptet udtryksvariablen og matcher den mod forskellige mønstre. Når et match er fundet, udføres det tilsvarende sæt kommandoer. Men hvis der ikke findes noget match, udføres standardkommandoerne elegant. Stjerne (*)-mønsteret fungerer som et jokertegn, der matcher alt, der ikke er blevet dækket.
Bash logiske operatører
En anden stor del af Bash if-udsagnsindspil er den logiske operatør. Disse operatører sætter dig i stand til at sammenlægge flere betingelser, så du kan træffe beslutninger baseret på sandheden eller falskheden af disse kombinerede betingelser. Bash inkorporerer tre primære logiske operatorer til brug i if-sætninger. Her er eksempler på de tre hovedtyper af logiske operatørkommandoer.
- Bash OG (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then echo "You meet the criteria for voting." fi
- Logisk eller (II):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then echo "Access granted." fi
- Ikke lig med:
if(( ! $a == "true" )) then echo "a" was initially false. else echo "a" was initially true. fi
Konklusion
I dette blogindlæg gav vi en introduktionsvejledning til Bash if-udsagn og hvordan man bruger dem. Vi diskuterede også, hvordan de kan gøre din kode meget pænere og mere funktionel. Ved at bruge disse betingede erklæringer effektivt kan du skabe kraftfulde scripts, der er i stand til at håndtere komplekse opgaver og beslutningstagning.
Er du ny i Linux-verdenen? Lad os være din rettesnor på denne spændende rejse! Vores Linux VPS er det perfekte udgangspunkt for begyndere, der tilbyder enkelhed uden at ofre kraft. Med brugervenlige grænseflader og ekspertsupport vil du finde det nemmere end nogensinde før at udnytte mulighederne på en Linux-server. Uanset om du opretter et websted, tester applikationer eller udforsker den store verden af Linux, giver vores Linux VPS et sikkert og problemfrit miljø. Tag dine første skridt ind i Linux-universet med selvtillid - tjek vores Linux VPS-muligheder i dag og begynd dit Linux-eventyr!
Få dig selv en økonomi eller premium Linux VPS til hosting af dit websted eller fjernskrivebord til den billigste pris derude. VPS Kører på Linux KVM for øget effektivitet og arbejder på kraftfuld hardware med NVMe SSD-lagring for øget hastighed.
Læs mereFAQ
Kan jeg bruge logiske operatorer i Bash if-sætninger?
Ja, du kan bruge logiske operatorer som f.eks '&' og '||' i Bash if-udsagn. f.eks. if [ $var -gt 0 ] && [ $var -lt 10 ]; så … vil udføre kodeblokken if $var er større end 0 og mindre end 10.
Kan jeg bruge flere betingelser i en enkelt if-sætning?
Ja, du kan bruge Bash if flere betingelser i en enkelt if-sætning ved at bruge logiske operatorer som f.eks -a (OG) eller -o (ELLER) for at kombinere dem. f.eks. if [ $var -gt 0 -a $var -lt 10 ]; så … vil udføre kodeblokken if $var er større end 0 OG mindre end 10.
Kan jeg bruge kommandoerstatning i Bash if-sætninger?
Ja, du kan bruge kommandosubstitution i Bash if-udsagn ved at omslutte kommandoen $() eller backticks (”). f.eks. if [ $(whoami) == "rod" ]; så … vil udføre kodeblokken, hvis den aktuelle bruger er root.
[[ vs [ vs ( vs ((: Hvad er forskellen mellem disse Bash-operatorer?
Kort sagt, [[ bruges til avanceret betinget test. [ bruges til grundlæggende betinget test. ( bruges til subshell-gruppering og kommandoudførelse. (( bruges til aritmetiske operationer.