logo

Bash Scripting – If Statement

Bash er en tolk for kommandospråk. Det er en standard kommandotolk på de fleste GNU/ Linux-systemer og er allment tilgjengelig på forskjellige operativsystemer. Navnet er en forkortelse for Bourne-Again SHell . Skripting gjør det mulig å utføre instruksjoner som ellers ville blitt utført én etter én interaktivt.

I denne artikkelen vil vi diskutere if-utsagn i bash-skripting.

Bash If-uttalelse

Den grunnleggende syntaksen til en 'if'-setning i Bash:

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

Forklaring:



  • if [ condition ]; then> : Denne linjen starter if-setningen, hvorcondition>er uttrykket som vurderes. Hvis betingelsen er sann, vil koden inne ithen>blokken er utført.
  • # code to be executed if the condition is true> : Dette er kodeblokken som utføres hvis betingelsen spesifisert i if-setningen er sann.
  • fi> : Dette markerer slutten på if-setningen.

Bash-skript for å finne ut om et tall er partall

Følgende er et eksempel manus som vil be deg om å legge inn et tall og deretter sjekker det om det gitte tallet er partall.

#!/usr/bin/bash
# Dette skriptet ber brukeren om å skrive inn et tall, sjekker om det er partall, og skriver ut en melding tilsvarende.
# Be brukeren om å angi et nummer

echo -n Skriv inn nummer:
les x

# Sjekk om det angitte tallet er partall
if [ $((x % 2)) == 0 ]; deretter
ekko Tallet er partall
være

Forklaring:

  1. #!/usr/bin/bash> : Dette er en shebang-linje som spesifiserer banen til Bash-tolken. Det indikerer at skriptet skal kjøres med Bash.
  2. echo -n 'Enter Number: '> : Denne linjen skriver ut spørsmålet Enter Number: uten et linjeskifttegn (-n>alternativ). Den venter på at brukeren skal taste inn et nummer.
  3. read x> : Leser brukerinndata og tilordner den til variabelenx>.
  4. if [ $((x % 2)) == 0 ]; then> : Denne linjen sjekker om resten av delingen av det angitte tallet (x>) med 2 er lik 0. Hvis sant, betyr det at tallet er partall.
  5. echo 'Number is Even'> : Hvis betingelsen i if-setningen er sann, skriver denne linjen Number is Even til konsollen.

Produksjon:

Bash-skript for å finne ut om et tall er partall

Bash-skript for å finne ut om et tall er partall

Merk: Skriptet håndterer ikke tilfeller der brukeren angir en ikke-numerisk verdi. Hvis brukeren angir en ikke-numerisk verdi, kan det gi uventede resultater. Ytterligere inndatavalidering kan legges til for å løse dette.

Last ned youtube video vlc

Bash if-else-erklæring

Den grunnleggende syntaksen for en 'hvis-else'-setning i Bash:

#!/bin/bash

if [betingelse]; deretter

# kode som skal utføres hvis betingelsen er sann

ellers

# kode som skal utføres hvis betingelsen er falsk

være

Forklaring:

  • if [ condition ]; then> : Denne linjen starter if-setningen, hvorcondition>er uttrykket som vurderes. Hvis betingelsen er sann, vil koden inne ithen>blokken er utført.
  • # code to be executed if the condition is true> : Dette er kodeblokken som utføres hvis betingelsen spesifisert i if-setningen er sann.
  • else> : Hvis betingelsen i if-setningen er usann, vil koden inne ielse>blokken er utført.
  • # code to be executed if the condition is false> : Dette er kodeblokken som utføres hvis betingelsen spesifisert i if-setningen er usann.
  • fi> : Dette markerer slutten på if-else-setningen.

Hvordan finne det større antallet ved å bruke if-else-utsagn i Bash-skriptet?

Her er Bash-skriptet for å finne ut det største tallet ved å bruke if-else-setningen i Bash Script.

#!/bin/bash
# Be brukeren om å angi en verdi for x

echo -n Skriv inn verdien av x:
les x

dobbeltlenket liste

if [$x -gt 5 ]; deretter
ekko x er større enn 5
ellers
ekko x er ikke større enn 5
være

Forklaring:

  • #!/bin/bash : Denne linjen kalles en shebang og indikerer at skriptet skal tolkes og utføres ved hjelp av Bash-skallet.
  • # Be brukeren om å angi en verdi for x : Dette er en kommentar som indikerer hensikten med neste linje.
  • echo -n Skriv inn verdien av x: : Denne linjen skriver ut meldingen Skriv inn verdien av x: til terminalen uten å gå til neste linje. Brukeren vil legge inn verdien på samme linje.
  • les x : Denne linjen leser brukerens input og tilordner den til variabelen 'x'.
  • if [$x -gt 5 ]; deretter : Dette er en if-setning som sjekker om verdien av 'x' er større enn 5.
    • $x : Representerer verdien av variabelen 'x'.
    • -gt : Står for større enn i sammenheng med numerisk sammenligning.
    • 5 : Verdien som sammenlignes mot.
  • ekko x er større enn 5 : Hvis betingelsen i forrige linje er sann, vil denne linjen bli utført, utskrift x er større enn 5 til terminalen.
  • ellers : Hvis betingelsen i if-setningen er usann, hopper skriptet til else-blokken.
  • ekko x er ikke større enn 5 : Denne linjen utføres hvis verdien av 'x' ikke er større enn 5, utskrift av x er ikke større enn 5 til terminalen.
  • være : Dette betyr slutten på if-else-blokken.

Produksjon:

Finne et større antall ved å bruke if-else

Finne et større antall ved å bruke if-else

Bash if-elif-else-erklæring

Deif-elif-else>uttalelse i Bash brukes for betinget forgrening. Den lar deg spesifisere flere betingelser og utføre forskjellige kodeblokker basert på evalueringen av disse forholdene.

Den grunnleggende syntaksen for en 'if-elif-else'-setning i Bash:

#!/bin/bash

if [betingelse1]; deretter
# Kode som skal utføres hvis betingelse1 er sann
elif [betingelse2]; deretter
# Kode som skal utføres hvis betingelse 2 er sann
elif [betingelse3]; deretter
# Kode som skal utføres hvis betingelse3 er sann
ellers
# Kode som skal utføres hvis ingen av betingelsene er sanne
være

Forklaring:

  • if [betingelse1]; deretter : Dette er utgangspunktet forif-elif-else>uttalelse. Koden i denne blokken vil bli utført hviscondition1>er sant.
  • # Kode som skal utføres hvis betingelse1 er sann : Erstatt denne kommentaren med den faktiske koden du vil kjøre hviscondition1>er sant.
  • elif [betingelse2]; deretter : Hviscondition1>er falsk, sjekker skriptetcondition2>. Hviscondition2>er sant, blir koden i denne blokken utført.
  • # Kode som skal utføres hvis betingelse 2 er sann : Erstatt denne kommentaren med den faktiske koden du vil kjøre hviscondition2>er sant.
  • elif [betingelse3]; deretter : Hvis begge delercondition1>ogcondition2>er falske, sjekker skriptetcondition3>. Hviscondition3>er sant, blir koden i denne blokken utført.
  • # Kode som skal utføres hvis betingelse3 er sann : Erstatt denne kommentaren med den faktiske koden du vil kjøre hviscondition3>er sant.
  • ellers : Hvis ingen av de foregående betingelsene (betingelse1, betingelse2, betingelse3, osv.) er sanne, vil koden ielse>blokken er utført.
  • # Kode som skal utføres hvis ingen av betingelsene er sanne : Erstatt denne kommentaren med den faktiske koden du vil kjøre hvis ingen av betingelsene er sanne.
  • være : Dette markerer slutten påif-elif-else>uttalelse. Ordet fi er stavet baklengs og brukes til å lukke de betingede blokkene i Bash.

Hvordan finne ut om tall er positivt, negativt eller null ved å bruke `if-elif-else`-setningen i Bash?

La oss utvide koden i eksemplet ovenfor for å legge til betingelsen for å se etter null.

pekere i c

#!/bin/bash

# Be brukeren om å angi et nummer

echo -n Skriv inn et tall:
les num

if [ $num -gt 0 ]; deretter
echo $num er et positivt tall.
elif [ $num -lt 0 ]; deretter
echo $num er et negativt tall.
ellers
ekko $num er null.
være

Forklaring:

  • #!/bin/bash : Denne linjen er en shebang som indikerer at skriptet skal tolkes og utføres ved hjelp av Bash-skallet.
  • # Be brukeren om å angi et nummer : Dette er en kommentar som indikerer hensikten med neste linje.
  • echo -n Skriv inn et tall: : Denne linjen skriver ut meldingen Skriv inn et nummer: til terminalen uten å gå til neste linje. Brukeren vil legge inn nummeret sitt på samme linje.
  • les num : Denne linjen leser brukerens input og tilordner den til variabelen 'num'.
  • if [ $num -gt 0 ]; deretter : Dette er en if-setning som sjekker om verdien av 'num' er større enn 0.
    • $num : Representerer verdien av variabelen 'num'.
    • -gt : Står for større enn i sammenheng med numerisk sammenligning.
    • 0 : Verdien som sammenlignes mot.
  • echo $num er et positivt tall. : Hvis betingelsen i forrige linje er sann, vil denne linjen bli utført, utskrift av $num er et positivt tall. til terminalen.
  • elif [ $num -lt 0 ]; deretter : Hvis betingelsen i if-setningen er usann, sjekker denne linjen om verdien av 'num' er mindre enn 0.
    • $num : Representerer verdien av variabelen 'num'.
    • -lt : Står for mindre enn i sammenheng med numerisk sammenligning.
    • 0 : Verdien som sammenlignes mot.
  • echo $num er et negativt tall. : Hvis betingelsen i elif-setningen er sann, vil denne linjen bli utført, utskrift av $num er et negativt tall. til terminalen.
  • ellers : Hvis begge betingelsene i if- og elif-setningene er falske, hopper skriptet til else-blokken.
  • ekko $num er null. : Denne linjen utføres hvis verdien av 'num' ikke er større enn 0 og ikke mindre enn 0, utskrift av $num er null. til terminalen.
  • være : Dette betyr slutten på if-elif-else-blokken.

Produksjon:

hvis tall er positivt, negativt eller null ved å bruke `if-elif-else`

hvis tall er positivt, negativt eller null ved å bruke `if-elif-else`

Bash Nested if Statement

I Bash kan du bruke nestetif>uttalelser for å skape mer komplekse betingede strukturer. Her er syntaksen for en nestetif>uttalelse:

#!/bin/bash

if [betingelse1]; deretter
# Kode som skal utføres hvis betingelse1 er sann
if [betingelse2]; deretter
# Kode som skal utføres hvis betingelse 2 er sann
ellers
# Kode som skal utføres hvis betingelse2 er usann
være
ellers
# Kode som skal utføres hvis betingelse1 er usann
være

Forklaring:

  • if [betingelse1]; deretter : Dette er den ytreif>uttalelse. Hviscondition1>er sant, kjøres koden inne i denne blokken.
  • # Kode som skal utføres hvis betingelse1 er sann : Erstatt denne kommentaren med den faktiske koden du vil kjøre hviscondition1>er sant.
  • if [betingelse2]; deretter : Inne i blokken til den ytreif>uttalelse, det er en indreif>uttalelse. Hviscondition2>er sant, kjøres koden inne i denne blokken.
  • # Kode som skal utføres hvis betingelse 2 er sann : Erstatt denne kommentaren med den faktiske koden du vil kjøre hviscondition2>er sant.
  • ellers : Hviscondition2>i det indreif>setningen er falsk, koden inne ielse>blokk av det indreif>uttalelsen er utført.
  • # Kode som skal utføres hvis betingelse2 er usann : Erstatt denne kommentaren med den faktiske koden du vil kjøre hviscondition2>er falsk.
  • være : Dette markerer slutten på det indreif>uttalelse.
  • ellers : Hviscondition1>i det ytreif>setningen er falsk, koden inne ielse>blokk av den ytreif>uttalelsen er utført.
  • # Kode som skal utføres hvis betingelse1 er usann : Erstatt denne kommentaren med den faktiske koden du vil kjøre hviscondition1>er falsk.
  • være : Dette markerer slutten på den ytreif>uttalelse.

Hvordan sjekke aldersberettigelse og pensjonistfordeler i Bash ved å bruke Nested If-erklæringer?

La oss finpusse koden ovenfor litt for å bruke nested-if.

#!/bin/bash
# Be brukeren om å angi en alder
echo -n Skriv inn alderen din:
lese alder

if [ $age -ge 18 ]; deretter
echo Du er stemmeberettiget.
if [ $age -ge 65 ]; deretter
echo Du er også kvalifisert for pensjonistfordeler.
ellers
echo Du er ennå ikke kvalifisert for pensjonisttilskudd.
være
ellers
echo Du er ikke stemmeberettiget ennå.
være

Forklaring:

  • #!/bin/bash : Denne linjen er en shebang som indikerer at skriptet skal tolkes og utføres ved hjelp av Bash-skallet.
  • # Be brukeren om å angi en alder : Dette er en kommentar som indikerer hensikten med neste linje.
  • echo -n Skriv inn alderen din: : Denne linjen skriver ut meldingen Skriv inn din alder: til terminalen uten å gå til neste linje. Brukeren vil angi sin alder på samme linje.
  • lese alder : Denne linjen leser brukerens input og tilordner den til variabelen 'alder'.
  • if [ $age -ge 18 ]; deretter : Dette er en if-setning som sjekker om verdien av 'alder' er større enn eller lik 18.
    • $alder : Representerer verdien av variabelen 'alder'.
    • -ge : Står for større enn eller lik i sammenheng med numerisk sammenligning.
    • 18 : Verdien som sammenlignes mot.
  • echo Du er stemmeberettiget. : Hvis betingelsen i forrige linje er sann, vil denne linjen bli utført, utskrift Du er stemmeberettiget. til terminalen.
  • if [ $age -ge 65 ]; deretter : Inne i den første if-blokken er dette en annen if-setning som sjekker om verdien av 'alder' er større enn eller lik 65.
    • $alder : Representerer verdien av variabelen 'alder'.
    • -ge : Står for større enn eller lik i sammenheng med numerisk sammenligning.
    • 65 : Verdien som sammenlignes mot.
  • echo Du er også kvalifisert for pensjonistfordeler. : Hvis betingelsen i det indre if-utsagnet er sant, vil denne linjen bli utført, utskrift Du er også berettiget til pensjonistfordeler. til terminalen.
  • ellers : Hvis betingelsen i den indre if-setningen er usann, hopper skriptet til else-blokken inne i den ytre if-setningen.
    • echo Du er ennå ikke kvalifisert for pensjonisttilskudd. : Denne linjen utføres hvis verdien av 'alder' ikke er større enn eller lik 65, utskrift Du er ennå ikke kvalifisert for pensjonistfordeler. til terminalen.
  • være : Dette betyr slutten på den indre if-else-blokken.
  • ellers : Hvis betingelsen i den ytre if-setningen er usann, hopper skriptet til else-blokken.
    • echo Du er ikke stemmeberettiget ennå. : Denne linjen utføres hvis verdien av 'alder' ikke er større enn eller lik 18, utskrift Du er ikke stemmeberettiget ennå. til terminalen.
  • være : Dette betyr slutten på den ytre if-else-blokken.

Produksjon:

nestet hvis du bruker Bash

nestet hvis du bruker Bash

Vanlige spørsmål og noen merknader om TILSTAND

Dette er et par ting å huske på når jeg skriver testbetingelser i bash.

1. Sørg for mellomrom mellom parentesene og selve kontroll-/sammenligningserklæringen.

Følgende vil for eksempel ikke fungere.

if [$x==0]>

Bash vil rapportere en feil om en mangler ] .

2. Avslutt alltid linjen før du legger til et nytt nøkkelord, for eksempel da.

Hvis, så, else, elif og fi alle er shell-søkeord, noe som betyr at de ikke kan brukes på samme linje. Sett en ; mellom forrige setning og nøkkelordet, eller start en ny linje med nøkkelordet.

3. For å bruke mange betingelser i én setning, bruk logiske operatorer.

Vi kan bruke logiske AND(&&)- eller logiske OR(||)-operatorer for å bruke flere betingelser.

fjær mvc

For eksempel:

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

Her er -ge en forkortelse for større enn eller lik

4. Hvordan sammenligne strenger i en Bash if-setning?

Bruk ` => `>operator for strenglikhet og ` !=`> for ulikhet.

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 bruke regulære uttrykk i Bash if-setninger?

Ja, du kan bruke ` [[ ... ]]`> konstruksjon for mer avansert strengmatching med regulære uttrykk.

huggorm full huggorm

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 sjekke om en fil finnes i et Bash-skript ved å bruke en if-setning?

Du kan bruke ` -e`> flagg i tilstanden, slik:

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

7. Hva er syntaksen for en if-else-setning i Bash-skripting?

Den grunnleggende syntaksen for en 'hvis-anne' uttalelse i Bash-skripting er:

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

8. Hvordan bruker jeg elif-setningen i et Bash-skript?

Den ` elif`> setningen brukes til å kontrollere tilleggsbetingelser hvis initialenif>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 bruke logiske operatorer (AND, OR) i Bash if-setninger?

Du kan bruke ` -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>

Konklusjon

I denne artikkelen diskuterte vi Bash-skripting som er som et supernyttig verktøy for å få datamaskinen til å gjøre ting automatisk. Denne artikkelen lærte oss om if-utsagnet i Bash, som er som en beslutningstaker i manus. Vi lærte det grunnleggende, så eksempler som å sjekke om et tall er partall eller finne ut om noen kan stemme, og til og med utforsket mer avanserte ting som å håndtere mange forhold eller sette if-utsagn inni hverandre. Artikkelen ga klare forklaringer, eksempler og svarte på vanlige spørsmål for å hjelpe oss å bli bedre til å bruke Bash-skript. Det viktigste er å være forsiktig med detaljer som mellomrom og spesielle regler, slik at skriptene våre fungerer jevnt og gjør oppgaver enklere å håndtere på datamaskinen.