50% rabat alle planer, begrænset tid. Start kl $2.48/mo
10 min tilbage
Servere & OS

Bash If-udsagn: Syntaks, variationer, brugstilfælde, kommandoer og mere!

Pius Bodenmann By Pius Bodenmann 10 min læst Opdateret 28. januar 2024
bash scripting

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, "” 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".

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!

Linux VPS Hosting

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 mere

FAQ

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.

 

Dele

Mere fra bloggen

Fortsæt med at læse.

Bedste selv-hostede apps, du kan køre med Cosmos Cloud-forsidebillede med app-paneler omkring et Cosmos-dashboard.
Servere & OS

Bedste selv-hostede apps, du kan køre med Cosmos Cloud: Filer, medier, adgangskoder, automatisering og mere!

Måske har du konfigureret Cosmos Cloud og vil nu se, hvilke apps der passer godt til den, eller måske har du ikke engang besluttet dig for Cosmos endnu og vil bare se, hvor godt den passer til dit arbejde.

Nick SilverNick Silver 16 min læst
Portainer vs Cosmos Cloud til styring af Docker Apps-cover med hybrid opsætningsdiagram og neon ops vs adgangsblokke.
Servere & OS

Portainer vs Cosmos Cloud: Bedst egnet til Docker App Management

Hvis du allerede kender Docker og bare vil have den renere måde at køre en voksende app-stack på, er her det korte svar på Portainer vs Cosmos Cloud. Portainer er det stærkeste valg for direc

Nick SilverNick Silver 14 min læst
Cosmos Cloud vs CasaOS vs Umbrel funktionsgrafik, der viser tre selv-hostede stier inde i en abstrakt cloud-netværksverden.
Servere & OS

Cosmos Cloud vs CasaOS vs Umbrel: Hvilken Self-Hosted Platform passer til din opsætning?

Det korte svar er, at CasaOS stadig er det nemmeste sted at begynde, Umbrel har den reneste kurerede følelse, og Cosmos Cloud giver mere mening, når du vil have strammere kontrol over domaet

Nick SilverNick Silver 11 min læst

Klar til at implementere? Fra $2,48/md.

Uafhængig sky, siden 2008. AMD EPYC, NVMe, 40 Gbps. 14 dages pengene tilbage.