Android

Bash if..else erklæring

Why fighting the coronavirus depends on you

Why fighting the coronavirus depends on you

Indholdsfortegnelse:

Anonim

Beslutningstagning er et af de mest grundlæggende begreber inden for programmering af computere. Som på ethvert andet programmeringssprog, if , if..else , if..elif..else og indlejret, if udsagn i Bash kan bruges til at udføre kode baseret på en bestemt betingelse.

I denne tutorial vil vi lede dig gennem det grundlæggende i Bash, if udsagn og vise dig, hvordan du bruger dem i dine shell-scripts.

if erklæring

Bash, if balsam kan have forskellige former. Den mest basale, if udsagn, har følgende form:

if TEST-COMMAND then STATEMENTS fi

if sætningen starter med if nøgleordet efterfulgt af det betingede udtryk og det then søgeord. Udsagnet slutter med fi nøgleordet.

Hvis TEST-COMMAND evalueres til True , udføres STATEMENTS . Hvis TEST-COMMAND returnerer False , sker der ikke noget, STATEMENTS ignoreres.

Generelt er det en god praksis altid at indrykke din kode og adskille kodeblokke med blanke linjer. De fleste mennesker vælger at bruge enten 4-plads eller 2-plads indrykket. Indrykk og blanke linjer gør din kode mere læselig og organiseret.

Lad os se på følgende eksemplet script, der kontrollerer, om et givet antal er større end 10.

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

Gem koden i en fil og kør den fra kommandolinjen:

bash test.sh

Scriptet beder dig om at indtaste et nummer. Hvis du for eksempel indtaster 15, vil testkommandoen evaluere til true fordi 15 er større end 10, og echo kommandoen inde i den then klausul udføres.

The variable is greater than 10.

if..else erklæring

Bash if..else erklæringen har følgende form:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Hvis TEST-COMMAND evalueres til True , udføres STATEMENTS1 . Ellers, hvis TEST-COMMAND returnerer False , udføres STATEMENTS2 . Du kan kun have en else klausul i erklæringen.

Lad os tilføje en else klausul til det forrige eksempel-script:

#!/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 erklæring

Bash if..elif..else erklæringen har følgende form:

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

Hvis TEST-COMMAND1 evalueres til True , udføres STATEMENTS1 . Hvis TEST-COMMAND2 evalueres til True , udføres STATEMENTS2 . Hvis ingen af ​​testkommandoerne evalueres til True , udføres STATEMENTS2 .

Du kan have en eller flere elif klausuler i erklæringen. Den else klausul er valgfri.

Betingelserne vurderes sekventielt. Når en betingelse er vendt True udføres de resterende betingelser ikke, og programkontrol flytter sig til slutningen af if sætningerne.

Lad os tilføje en elif klausul til det forrige script:

#!/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

Indlejret if udsagn

Bash giver dig mulighed for at hekke, if udsagn inden for if udsagn. Du kan placere flere, if udsagn i en anden, if sætning.

Følgende script vil bede dig om at indtaste tre numre og udskrive det største antal blandt de tre numre.

#!/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

Sådan ser output ud:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. I stedet for at bruge indlejrede, if udsagn, er det som regel mere effektivt at bruge sagsangivelsen.

Flere forhold

De logiske OR og AND operatører giver dig mulighed for at bruge flere betingelser i if sætningerne.

Her er en anden version af scriptet for at udskrive det største antal blandt de tre numre. I denne version vil vi i stedet for de indlejrede, if udsagn, bruge den logiske AND ( && ) operator.

#!/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 har testkommandoen en af ​​følgende syntaksformer:

test EXPRESSION]

For at ignorere testudtrykket skal du bruge den logiske NOT ( ! ) Operator. Når du sammenligner strenge, skal du altid bruge enkelt eller dobbelt anførselstegn for at undgå problemer med at opdele ord eller kløbe.

Nedenfor er nogle af de mest anvendte operatører:

  • -n VAR - Sandt hvis længden af ​​VAR er større end nul. -z VAR - Sandt hvis VAR er tom. STRING1 = STRING2 - Sandt [STRING1 og STRING2 er ens. STRING1 != STRING2 - Sand STRING1 og STRING2 er ikke ens. INTEGER1 -eq INTEGER2 - True INTEGER1 og INTEGER2 er ens. INTEGER1 -gt INTEGER2 - Sand INTEGER1 er større end INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 er mindre end INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 er lig eller større end INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 er lig eller mindre end INTEGER2. -h FILE - Sandt, hvis FILEN findes og er et symbolsk link. -r FILE - Sandt, hvis FILEN findes og er læsbar. -w FILE - Sandt, hvis FILEN findes og kan skrives. -x FILE - Sandt, hvis FILEN findes og er eksekverbar. -d FILE - Sandt, hvis FILEN findes og er et bibliotek. -e FILE - Sandt, hvis FILEN findes og er en fil, uanset type (node, bibliotek, socket osv.). -f FILE - Sandt, hvis FILEN findes og er en almindelig fil (ikke et bibliotek eller enhed).

Konklusion

if..else if , if..else og if..elif..else giver dig mulighed for at kontrollere strømmen af ​​Bash-scriptets udførelse ved at evaluere givne betingelser.

bash terminal