Android

Bash if..else uttalelse

Shell Scripting - If & If/else

Shell Scripting - If & If/else

Innholdsfortegnelse:

Anonim

Beslutningsprosesser er et av de mest grunnleggende konseptene innen dataprogrammering. Som på alle andre programmeringsspråk, if , if..else , if..elif..else og nestes if utsagn i Bash kan brukes til å utføre kode basert på en viss betingelse.

I denne opplæringen vil vi lede deg gjennom det grunnleggende i Bash if uttalelser og vise deg hvordan du bruker dem i skallskriptene dine.

if uttalelse

Bash if balsam kan ha forskjellige former. Den mest grunnleggende if uttalelsen har følgende form:

if TEST-COMMAND then STATEMENTS fi

if setningen starter med if nøkkelordet etterfulgt av det betingede uttrykket og det then søkeordet. Uttalelsen slutter med fi nøkkelordet.

Hvis TEST-COMMAND evalueres til True , blir STATEMENTS utført. Hvis TEST-COMMAND returnerer False , skjer det ingenting, STATEMENTS blir ignorert.

Generelt er det en god praksis å alltid innrykke koden og skille kodeblokker med blanke linjer. De fleste velger å bruke enten 4-plass eller 2-plass innrykk. Innrykk og blanke linjer gjør koden din mer lesbar og organisert.

La oss se på følgende eksemplet skript som sjekker om et gitt antall er større enn 10.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Lagre koden i en fil og kjør den fra kommandolinjen:

bash test.sh

Manuset ber deg om å oppgi et nummer. Hvis du for eksempel angir 15, vil testkommandoen evaluere til true fordi 15 er større enn 10, og echo kommandoen inne i then leddet vil bli utført.

The variable is greater than 10.

if..else erklæring

Bash if..else uttalelsen har følgende form:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Hvis TEST-COMMAND evalueres til True , vil STATEMENTS1 bli utført. Hvis ikke TEST-COMMAND returnerer False , vil STATEMENTS2 bli utført. Du kan bare ha en else klausul i uttalelsen.

La oss legge til en else klausul til det forrige eksempelskriptet:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Uttalelse

if..elif..else om Bash if..elif..else har følgende form:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Hvis TEST-COMMAND1 evalueres til True , vil STATEMENTS1 bli utført. Hvis TEST-COMMAND2 evalueres til True , vil STATEMENTS2 bli kjørt. Hvis ingen av testkommandoene evalueres til True , utføres STATEMENTS2 .

Du kan ha en eller flere elif ledd i uttalelsen. Den else klausulen er valgfri.

Betingelsene blir evaluert sekvensielt. Når en tilstand kommer tilbake er de resterende betingelsene ikke utført, og programkontrollen beveger seg til slutten av if setningene.

La oss legge til en elif klausul til det forrige manuset:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Hekket if uttalelser

Bash lar deg hekke if uttalelser i if uttalelser. Du kan plassere flere if uttalelser i en annen if uttalelse.

Følgende skript ber deg om å oppgi tre tall og vil skrive ut det største tallet blant de tre tallene.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Slik ser utgangen ut:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. I stedet for å bruke nestede if uttalelser, er det vanligvis mer effektivt å bruke saksuttalelsen.

Flere forhold

De logiske OR og AND operatørene lar deg bruke flere forhold i if uttalelsene.

Her er en annen versjon av skriptet for å skrive ut det største tallet blant de tre tallene. I denne versjonen vil vi i stedet for de nestede if uttalelsene bruke den logiske AND (& &) operatøren.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Testoperatører

I Bash tar testkommandoen ett av følgende syntaksformer:

test EXPRESSION]

For å negere testuttrykket bruker du den logiske NOT ( ! ) Operatøren. Når du sammenligner strenger, bruk alltid enkle eller doble anførselstegn for å unngå ordoppdeling eller kløing.

Nedenfor er noen av de mest brukte operatørene:

  • -n VAR - Sann hvis lengden på VAR er større enn null. -z VAR - Sann hvis VAR er tom. STRING1 = STRING2 - Sant [STRING1 og STRING2 er like. STRING1 != STRING2 - Ekte STRING1 og STRING2 er ikke like. INTEGER1 -eq INTEGER2 - True INTEGER1 og INTEGER2 er like. INTEGER1 -gt INTEGER2 - True INTEGER1 er større enn INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 er mindre enn INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 er lik eller større enn INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 er lik eller mindre enn INTEGER2. -h FILE - Sant om FILEN eksisterer og er en symbolsk kobling. -r FILE - Riktig hvis FILEN eksisterer og er lesbar. -w FILE - Sann hvis FILEN eksisterer og kan skrives. -x FILE - Sann hvis FILEN eksisterer og er kjørbar. -d FILE - Sann hvis FILEN eksisterer og er en katalog. -e FILE - Sant om FILEN eksisterer og er en fil, uansett type (node, katalog, socket, etc.). -f FILE - Sant om FILEN eksisterer og er en vanlig fil (ikke en katalog eller enhet).

Konklusjon

Uttalelsene if , if..else og if..else lar deg kontrollere flyten av utførelsen av Bash-skriptet ved å evaluere gitte forhold.

bash terminal