I denne tutorial, vil vi lede dig gennem de grundlæggende principper for Bash if erklæring og vise dig, hvordan du bruger det i din shell-scripts.

beslutningstagning er et af de mest grundlæggende begreber inden for computerprogrammering. Som i andre programmeringssprog, if if..else if..elif..else og indlejrede if erklæringer i Bash kan bruges til at udføre kode, der er baseret på en bestemt tilstand.,

hvis erklæring #

Bash if betingelser kan have forskellige former. De mest basale if erklæring tager følgende form:

if TEST-COMMANDthen STATEMENTSfi

if erklæring, der starter med if søgeord efterfulgt af den betingede udtryk og then søgeord. Udsagnet slutter med fi nøgleord.,

Hvis TEST-COMMANDevaluerer til True, bliver STATEMENTS udført. Hvis TEST-COMMAND returnerer False, sker der intet, STATEMENTS bliver ignoreret.

generelt er det en god praksis at altid indrykke din kode og adskille kodeblokke med tomme linjer. De fleste mennesker vælger at bruge enten 4-plads eller 2-plads indrykning. Fordybninger og tomme linjer gør din kode mere læsbar og organiseret.,

Lad os se på følgende eksempel på et script, der checker, om et givet tal er større end 10:

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

Gemme kode i en fil og køre den fra kommandolinjen:

bash test.sh

scriptet vil bede dig om at indtaste et nummer. Hvis, for eksempel, at du indtaster 15 test kommando vil vurdere, at true fordi 15 er større end 10, og den echo kommando inde i then bestemmelse vil blive gennemført.

The variable is greater than 10.

hvis..,ellers Erklæring #

Bash if..else erklæring tager følgende form:

if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi

Hvis TEST-COMMAND giver True STATEMENTS1 vil blive henrettet. Ellers, hvis TEST-COMMAND returnerer False, vil STATEMENTS2 blive udført. Du kan kun have enelse klausul i erklæringen.,

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

Hvis du kører koden og indtaster et tal, udskriver scriptet en anden meddelelse baseret på, om antallet er større eller mindre / lig med 10.

hvis..elif..ellers Erklæring #

Bash if..elif..else erklæring tager følgende form:

if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi

Hvis TEST-COMMAND1 giver True STATEMENTS1 vil blive henrettet., Hvis TEST-COMMAND2 evaluerer til True, vil STATEMENTS2 blive udført. Hvis ingen af testkommandoerne vurderer til True, udføres STATEMENTS2.

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

betingelserne evalueres sekventielt., Når en betingelse vender tilbage True de resterende betingelser udføres ikke, Og programkontrol bevæger sig til slutningen af if udsagn.

Lad os tilføje en elif klausul, at den tidligere script:

Indlejrede if-Sætninger #

Bash giver dig mulighed for at rede if sætninger i if erklæringer. Du kan placere flere if erklæring inde i en anden if erklæring.,

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

Her er, hvordan resultatet vil se ud som dette:

Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
Generelt, det er mere effektivt at bruge case erklæring i stedet indlejrede if erklæringer.

Flere Betingelser #

Den logiske OR og AND operatører, der giver dig mulighed for at bruge flere forhold i if erklæringer.,

Her er en anden version af scriptet til at udskrive det største antal blandt de tre tal. I denne version, i stedet for den indlejrede if erklæringer, vi bruger den logiske AND (&&) operatør.

Test Operatører #

I Bash, test kommandoen tager et af følgende syntaks former:

test EXPRESSION]

for At gøre det script, bærbare, foretrækker at bruge den gamle test [ kommando, som er tilgængelig på alle POSIX-skaller., Den nye opgraderede version af test kommandoen [[ (dobbelt parentes) understøttes på de fleste moderne systemer, der anvender Bash, Zsh, og Ksh som en default shell.

for At ophæve test udtryk, skal du bruge den logiske NOT (!) operatør. Når du sammenligner strenge, skal du altid bruge enkelt-eller dobbelt citater for at undgå ordopdeling og globbing-problemer.,

Nedenfor er nogle af de mest almindeligt anvendte operatorer:

  • -n VAR – True, hvis længde VAR er større end nul.
  • -z VAR – True, hvis VAR er tom.
  • STRING1 = STRING2 – True, hvis STRING1 og STRING2, der er ens.
  • STRING1 != STRING2 – True, hvis STRING1 og STRING2 ikke lig med.,
  • INTEGER1 -eq INTEGER2 – True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 – True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 – True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 – True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 – True if INTEGER1 is equal or less than INTEGER2.,
  • -h FILE – True if the FILE exists and is a symbolic link.
  • -r FILE – True if the FILE exists and is readable.
  • -w FILE – True if the FILE exists and is writable.
  • -x FILE – True if the FILE exists and is executable.,
  • -d FILE – sand hvis FILE findes og er en mappe.
  • -e FILE – True, hvis FILE eksisterer og er en fil, uanset type (node, bibliotek, stik, osv.).
  • -f FILE – True, hvis FILE findes og er en almindelig fil (ikke en mappe eller enhed).,

Konklusion #

if if..else og if..elif..else erklæringer giver dig mulighed for at styre strømmen af Bash script ‘ s udførelse af en evaluering af givne betingelser.