Bash Scripting – If Statement

Bash Scripting – If Statement

Bash er en tolk til kommandosprog. Det er en standard kommandofortolker på de fleste GNU/ Linux systemer og er bredt tilgængelig på forskellige operativsystemer. Navnet er en forkortelse for Bourne-Again SHell . Scripting gør det muligt at udføre instruktioner, der ellers ville blive udført én efter én interaktivt.

I denne artikel vil vi diskutere om if-sætning i bash-scripting.

Bash If-erklæring

Den grundlæggende syntaks for en 'if'-sætning i Bash:

#!/bin/bash  if [ condition ]; then  # code to be executed if the condition is true fi 

Forklaring:

  • if [ condition ]; then> : Denne linje starter if-sætningen, hvor condition> er det udtryk, der vurderes. Hvis betingelsen er sand, vil koden inde i then> blok udføres.
  • # code to be executed if the condition is true> : Dette er den kodeblok, der udføres, hvis betingelsen angivet i if-sætningen er sand.
  • fi> : Dette markerer slutningen af ​​if-sætningen.

Bash-script til at bestemme, om et tal er lige

Det følgende er et eksempel manuskript der vil bede dig om at indtaste et tal, og derefter tjekker det, om det givne tal er lige.

#!/usr/bin/bash
# Dette script beder brugeren om at indtaste et tal, tjekker, om det er lige, og udskriver en besked i overensstemmelse hermed.
# Bed brugeren om at indtaste et nummer

echo -n Indtast nummer:
læs x

# Tjek om det indtastede tal er lige
if [ $((x % 2)) == 0 ]; derefter
ekko Tal er lige
være

Forklaring:

  1. #!/usr/bin/bash> : Dette er en shebang-linje, der angiver stien til Bash-tolken. Det angiver, at scriptet skal udføres ved hjælp af Bash.
  2. echo -n 'Enter Number: '> : Denne linje udskriver prompten Indtast nummer: uden et linjeskifttegn ( -n> mulighed). Den venter på, at brugeren indtaster et nummer.
  3. read x> : Læser brugerinputtet og tildeler det til variablen x> .
  4. if [ $((x % 2)) == 0 ]; then> : Denne linje kontrollerer, om resten af ​​divisionen af ​​det indtastede tal ( x> ) med 2 er lig med 0. Hvis sandt, betyder det, at tallet er lige.
  5. echo 'Number is Even'> : Hvis betingelsen i if-sætningen er sand, udskriver denne linje Number is Even til konsollen.

Produktion:

Bash-script til at bestemme, om et tal er lige

Bash-script til at bestemme, om et tal er lige

Bemærk: Scriptet håndterer ikke tilfælde, hvor brugeren indtaster en ikke-numerisk værdi. Hvis brugeren indtaster en ikke-numerisk værdi, kan det give uventede resultater. Yderligere inputvalidering kan tilføjes for at løse dette.

Bash if-else-erklæring

Den grundlæggende syntaks for en 'hvis-else'-sætning i Bash:

#!/bin/bash

if [betingelse]; derefter

# kode, der skal udføres, hvis betingelsen er sand

andet

# kode, der skal udføres, hvis betingelsen er falsk

være

Forklaring:

  • if [ condition ]; then> : Denne linje starter if-sætningen, hvor condition> er det udtryk, der vurderes. Hvis betingelsen er sand, vil koden inde i then> blok udføres.
  • # code to be executed if the condition is true> : Dette er den kodeblok, der udføres, hvis betingelsen angivet i if-sætningen er sand.
  • else> : Hvis betingelsen i if-sætningen er falsk, vil koden inde i else> blok udføres.
  • # code to be executed if the condition is false> : Dette er den kodeblok, der udføres, hvis betingelsen angivet i if-sætningen er falsk.
  • fi> : Dette markerer slutningen af ​​if-else-sætningen.

Hvordan finder man det større antal ved at bruge if-else-udsagn i Bash Script?

Her er Bash-scriptet for at finde ud af det største antal ved at bruge if-else-sætningen i Bash Script.

#!/bin/bash
# Bed brugeren om at indtaste en værdi for x

echo -n Indtast værdien af ​​x:
læs x

if [$x -gt 5]; derefter
ekko x er større end 5
andet
ekko x er ikke større end 5
være

Forklaring:

  • #!/bin/bash : Denne linje kaldes en shebang og angiver, at scriptet skal fortolkes og udføres ved hjælp af Bash-skallen.
  • # Bed brugeren om at indtaste en værdi for x : Dette er en kommentar, der angiver formålet med den næste linje.
  • echo -n Indtast værdien af ​​x: : Denne linje udskriver meddelelsen Indtast værdien af ​​x: til terminalen uden at gå til næste linje. Brugeren vil indtaste deres værdi på samme linje.
  • læs x : Denne linje læser brugerens input og tildeler den til variablen 'x'.
  • if [$x -gt 5]; derefter : Dette er en if-sætning, der kontrollerer, om værdien af ​​'x' er større end 5.
    • $x : Repræsenterer værdien af ​​variablen 'x'.
    • -gt : Står for større end i sammenhæng med numerisk sammenligning.
    • 5 : Værdien der sammenlignes med.
  • ekko x er større end 5 : Hvis betingelsen i den foregående linje er sand, vil denne linje blive udført, udskrivning x er større end 5 til terminalen.
  • andet : Hvis betingelsen i if-sætningen er falsk, hopper scriptet til else-blokken.
  • ekko x er ikke større end 5 : Denne linje udføres, hvis værdien af ​​'x' ikke er større end 5, udskrivning af x ikke er større end 5 til terminalen.
  • være : Dette angiver slutningen af ​​if-else-blokken.

Produktion:

Find et større antal ved at bruge if-else

Find et større antal ved at bruge if-else

Bash if-elif-else-erklæring

Det if-elif-else> statement i Bash bruges til betinget forgrening. Det giver dig mulighed for at specificere flere betingelser og udføre forskellige kodeblokke baseret på evalueringen af ​​disse betingelser.

Den grundlæggende syntaks for en 'hvis-elif-else'-sætning i Bash:

#!/bin/bash

if [betingelse1]; derefter
# Kode, der skal udføres, hvis betingelse1 er sand
elif [betingelse2]; derefter
# Kode, der skal udføres, hvis betingelse2 er sand
elif [betingelse3]; derefter
# Kode, der skal udføres, hvis betingelse3 er sand
andet
# Kode, der skal udføres, hvis ingen af ​​betingelserne er sande
være

Forklaring:

  • if [betingelse1]; derefter : Dette er udgangspunktet for if-elif-else> udmelding. Koden i denne blok vil blive udført hvis condition1> er sandt.
  • # Kode, der skal udføres, hvis betingelse1 er sand : Erstat denne kommentar med den faktiske kode, du vil køre hvis condition1> er sandt.
  • elif [betingelse2]; derefter : Hvis condition1> er falsk, tjekker scriptet condition2> . Hvis condition2> er sandt, udføres koden i denne blok.
  • # Kode, der skal udføres, hvis betingelse2 er sand : Erstat denne kommentar med den faktiske kode, du vil køre hvis condition2> er sandt.
  • elif [betingelse3]; derefter : Hvis begge condition1> og condition2> er falske, tjekker scriptet condition3> . Hvis condition3> er sandt, udføres koden i denne blok.
  • # Kode, der skal udføres, hvis betingelse3 er sand : Erstat denne kommentar med den faktiske kode, du vil køre hvis condition3> er sandt.
  • andet : Hvis ingen af ​​de foregående betingelser (betingelse1, betingelse2, betingelse3 osv.) er sande, vil koden i else> blok udføres.
  • # Kode, der skal udføres, hvis ingen af ​​betingelserne er sande : Erstat denne kommentar med den faktiske kode, du vil køre, hvis ingen af ​​betingelserne er sande.
  • være : Dette markerer slutningen af if-elif-else> udmelding. Ordet fi er stavet baglæns og bruges til at lukke de betingede blokke i Bash.

Hvordan finder man ud af, om tal er positivt, negativt eller nul ved at bruge 'if-elif-else'-udsagn i Bash?

Lad os udvide koden i ovenstående eksempel for at tilføje betingelsen for at tjekke for nul.

#!/bin/bash

# Bed brugeren om at indtaste et nummer

echo -n Indtast et tal:
læs num

if [$num -gt 0]; derefter
echo $num er et positivt tal.
elif [ $num -lt 0 ]; derefter
echo $num er et negativt tal.
andet
ekko $num er nul.
være

Forklaring:

  • #!/bin/bash : Denne linie er en shebang, der angiver, at scriptet skal fortolkes og udføres ved hjælp af Bash-skallen.
  • # Bed brugeren om at indtaste et nummer : Dette er en kommentar, der angiver formålet med den næste linje.
  • echo -n Indtast et tal: : Denne linje udskriver meddelelsen Indtast et nummer: til terminalen uden at gå til næste linje. Brugeren indtaster sit nummer på samme linje.
  • læs num : Denne linje læser brugerens input og tildeler den til variablen 'num'.
  • if [ $num -gt 0 ]; derefter : Dette er en if-sætning, der kontrollerer, om værdien af ​​'num' er større end 0.
    • $num : Repræsenterer værdien af ​​variablen 'num'.
    • -gt : Står for større end i sammenhæng med numerisk sammenligning.
    • 0 : Værdien der sammenlignes med.
  • echo $num er et positivt tal. : Hvis betingelsen i den foregående linje er sand, vil denne linje blive udført, udskrivning af $num er et positivt tal. til terminalen.
  • elif [ $num -lt 0 ]; derefter : Hvis betingelsen i if-sætningen er falsk, kontrollerer denne linje, om værdien af ​​'num' er mindre end 0.
    • $num : Repræsenterer værdien af ​​variablen 'num'.
    • -lt : Står for mindre end i forbindelse med numerisk sammenligning.
    • 0 : Værdien der sammenlignes med.
  • echo $num er et negativt tal. : Hvis betingelsen i elif-sætningen er sand, vil denne linje blive udført, udskrivning af $num er et negativt tal. til terminalen.
  • andet : Hvis begge betingelserne i if- og elif-sætningerne er falske, hopper scriptet til else-blokken.
  • ekko $num er nul. : Denne linje udføres, hvis værdien af ​​'num' ikke er større end 0 og ikke mindre end 0, udskrivning af $num er nul. til terminalen.
  • være : Dette betyder slutningen af ​​if-elif-else-blokken.

Produktion:

hvis tal er positivt, negativt eller nul ved at bruge `if-elif-else`

hvis tal er positivt, negativt eller nul ved at bruge `if-elif-else`

Bash Nested if Statement

I Bash kan du bruge indlejret if> udsagn for at skabe mere komplekse betingede strukturer. Her er syntaksen for en indlejret if> udmelding:

#!/bin/bash

if [betingelse1]; derefter
# Kode, der skal udføres, hvis betingelse1 er sand
if [betingelse2]; derefter
# Kode, der skal udføres, hvis betingelse2 er sand
andet
# Kode, der skal udføres, hvis betingelse2 er falsk
være
andet
# Kode, der skal udføres, hvis betingelse1 er falsk
være

Forklaring:

  • if [betingelse1]; derefter : Dette er den ydre if> udmelding. Hvis condition1> er sandt, udføres koden inde i denne blok.
  • # Kode, der skal udføres, hvis betingelse1 er sand : Erstat denne kommentar med den faktiske kode, du vil køre hvis condition1> er sandt.
  • if [betingelse2]; derefter : Inde i blokken af ​​det ydre if> udsagn, der er en indre if> udmelding. Hvis condition2> er sandt, udføres koden inde i denne blok.
  • # Kode, der skal udføres, hvis betingelse2 er sand : Erstat denne kommentar med den faktiske kode, du vil køre hvis condition2> er sandt.
  • andet : Hvis condition2> i det indre if> sætningen er falsk, koden inde i else> blok af det indre if> erklæring udføres.
  • # Kode, der skal udføres, hvis betingelse2 er falsk : Erstat denne kommentar med den faktiske kode, du vil køre hvis condition2> er falsk.
  • være : Dette markerer slutningen af ​​det indre if> udmelding.
  • andet : Hvis condition1> i det ydre if> sætningen er falsk, koden inde i else> blok af det ydre if> erklæring udføres.
  • # Kode, der skal udføres, hvis betingelse1 er falsk : Erstat denne kommentar med den faktiske kode, du vil køre hvis condition1> er falsk.
  • være : Dette markerer slutningen af ​​det ydre if> udmelding.

Hvordan tjekker man aldersberettigelse og pensionsydelser i Bash ved hjælp af Nested If-erklæringer?

Lad os justere koden ovenfor lidt for at bruge nested-if.

#!/bin/bash
# Bed brugeren om at indtaste en alder
echo -n Indtast din alder:
læse alder

if [ $age -ge 18 ]; derefter
echo Du er stemmeberettiget.
if [ $age -ge 65 ]; derefter
echo Du er også berettiget til ældreydelser.
andet
echo Du er endnu ikke berettiget til ældreydelser.
være
andet
echo Du er ikke stemmeberettiget endnu.
være

Forklaring:

  • #!/bin/bash : Denne linie er en shebang, der angiver, at scriptet skal fortolkes og udføres ved hjælp af Bash-skallen.
  • # Bed brugeren om at indtaste en alder : Dette er en kommentar, der angiver formålet med den næste linje.
  • echo -n Indtast din alder: : Denne linje udskriver meddelelsen Indtast din alder: til terminalen uden at gå til næste linje. Brugeren indtaster deres alder på samme linje.
  • læse alder : Denne linje læser brugerens input og tildeler den til variablen 'alder'.
  • if [ $age -ge 18 ]; derefter : Dette er en if-sætning, der kontrollerer, om værdien af ​​'alder' er større end eller lig med 18.
    • $alder : Repræsenterer værdien af ​​variablen 'alder'.
    • -ge : Står for større end eller lig med i sammenhæng med numerisk sammenligning.
    • 18 : Værdien der sammenlignes med.
  • echo Du er stemmeberettiget. : Hvis betingelsen i den foregående linje er sand, vil denne linje blive udført, udskrivning Du er stemmeberettiget. til terminalen.
  • if [ $age -ge 65 ]; derefter : Inde i den første if-blok er dette en anden if-sætning, der kontrollerer, om værdien af ​​'alder' er større end eller lig med 65.
    • $alder : Repræsenterer værdien af ​​variablen 'alder'.
    • -ge : Står for større end eller lig med i sammenhæng med numerisk sammenligning.
    • 65 : Værdien der sammenlignes med.
  • echo Du er også berettiget til ældreydelser. : Hvis betingelsen i det indre if-udsagn er sand, udføres denne linje, udskrivning Du er også berettiget til pensionistydelser. til terminalen.
  • andet : Hvis betingelsen i den indre if-sætning er falsk, hopper scriptet til else-blokken inde i den ydre if-sætning.
    • echo Du er endnu ikke berettiget til ældreydelser. : Denne linje udføres, hvis værdien af ​​'alder' ikke er større end eller lig med 65, udskrivning Du er endnu ikke berettiget til pensionistydelser. til terminalen.
  • være : Dette betyder slutningen af ​​den indre if-else-blok.
  • andet : Hvis betingelsen i den ydre if-sætning er falsk, hopper scriptet til else-blokken.
    • echo Du er ikke stemmeberettiget endnu. : Denne linje udføres, hvis værdien af ​​'alder' ikke er større end eller lig med 18, udskrivning Du er ikke berettiget til at stemme endnu. til terminalen.
  • være : Dette betyder slutningen af ​​den ydre if-else-blok.

Produktion:

indlejret - hvis du bruger Bash

indlejret - hvis du bruger Bash

Ofte stillede spørgsmål og nogle bemærkninger om TILSTAND

Dette er et par ting at huske på, mens jeg skriver testbetingelser i bash.

1. Sørg for mellemrum mellem parenteserne og den faktiske kontrol-/sammenligningserklæring.

For eksempel vil følgende ikke virke.

if [$x==0] 

Bash vil rapportere en fejl om en mangler ] .

2. Afslut altid linjen, før du tilføjer et nyt søgeord, f.eks. derefter.

Hvis, så, else, elif og fi alle er shell-søgeord, hvilket betyder, at de ikke kan bruges på samme linje. Sæt en ; mellem det forrige udsagn og nøgleordet, eller start en ny linje med nøgleordet.

3. Brug logiske operatorer for at bruge mange betingelser i én sætning.

Vi kan bruge logiske AND(&&)- eller logiske OR(||)-operatorer til at bruge flere betingelser.

For eksempel:

if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then  echo 'x is greatest' fi 

Her er -ge en stenografi for større end eller lig med

4. Hvordan sammenligner man strenge i en Bash if-sætning?

Brug ` => `> operator for strenglighed og ` !=`> for ulighed.

For eksempel:

if [ '$string1' = '$string2' ]; then  # Code to execute if strings are equal else  # Code to execute if strings are not equal fi 

5. Kan jeg bruge regulære udtryk i Bash if-sætninger?

Ja, du kan bruge ` [[ ... ]]`> konstruktion til mere avanceret strengmatchning med regulære udtryk.

For eksempel:

if [[ '$string' =~ ^[0-9]+$ ]]; then  # Code to execute if the string contains only numbers else  # Code to execute if the string does not contain only numbers fi 

6. Hvordan kontrollerer man, om en fil findes i et Bash-script ved hjælp af en if-sætning?

Du kan bruge ` -e`> flag i tilstanden, som denne:

if [ -e 'filename' ]; then  # Code to execute if the file exists else  # Code to execute if the file does not exist fi 

7. Hvad er syntaksen for en if-else-sætning i Bash-scripting?

Den grundlæggende syntaks for en 'hvis-andet' statement i Bash scripting er:

if [ condition ]; then  # Code to execute if condition is true else  # Code to execute if condition is false fi 

8. Hvordan bruger jeg elif-sætningen i et Bash-script?

Den ` elif`> erklæring bruges til at kontrollere yderligere betingelser, hvis initialen if> tilstanden er falsk.

Her er et eksempel:

if [ condition1 ]; then  # Code to execute if condition1 is true elif [ condition2 ]; then  # Code to execute if condition2 is true else  # Code to execute if none of the conditions are true fi 

9. Hvordan kan jeg bruge logiske operatorer (AND, OR) i Bash if-sætninger?

Du kan bruge ` -a`> for logisk OG og ` -o`> for logisk ELLER.

For eksempel:

if [ condition1 -a condition2 ]; then  # Code to execute if both conditions are true fi 

Konklusion

I denne artikel diskuterede vi Bash scripting, som er som et super nyttigt værktøj til at få din computer til at gøre tingene automatisk. Denne artikel lærte os om if-sætningen i Bash, som er som en beslutningstager i scripts. Vi lærte det grundlæggende, så eksempler som at tjekke, om et tal er lige eller finde ud af, om nogen kan stemme, og endda udforsket mere avancerede ting som at håndtere mange forhold eller sætte if-udsagn ind i hinanden. Artiklen gav klare forklaringer, eksempler og besvarede almindelige spørgsmål for at hjælpe os med at blive bedre til at bruge Bash-scripts. Det vigtigste er at være forsigtig med detaljer som mellemrum og særlige regler, så vores scripts fungerer problemfrit og gør opgaver nemmere at håndtere på computeren.