Wéi benotzen d'Conditioune Conditioune bannen a bash script

Den Testbefehl kann op der Linux Command Line benotzen fir een Element géint eng aner ze vergläichen, awer et ass méi heefeg an BASH Shell Skripten als Deel vun bedingungslosen Aussoen déi Kontrolllogik a Programmfluss kontrolléiert.

E Basisproblem

Dir kënnt dës Kommandoen einfach duerch en Ersetzen vun enger Termin window .

Test 1 -eq 2 && echo "yes" || Echo "nee"

Dëse Kommando kann opgebrach ginn:

Am Prinzip ass de Kommando 1 bis 2 ze vergläichen an se mat der Echo "yes" Erklärung ausgezeechent ginn, déi "Jo" affichéiert an wann se net mat dem Echo "Nee" -Anweisung passen, gëtt et "nee".

Verglach Nummeren

Wann Dir Elementer benotzt, déi als Zuelen parse vergläichen, kënnt Dir de folgende Vergleichtoperateur benotzen:

Beispiller:

Test 1 -eq 2 && echo "yes" || Echo "nee"

(weist "nee" op dem Écran, well 1 net gläich as 2)

Test 1 -g 2 && Echo "Jo" || Echo "nee"

(weist "nee" op dem Écran, well 1 net méi grouss oder gläich as 2)

Test 1 -T 2 && Echo "Jo" || Echo "nee"

(weist "nee" op dem Écran, well 1 net méi grouss ass wéi 2)

Test 1 -le 2 && Echo "Jo" || Echo "nee"

(weist "Jo" op dem Écran, well 1 ass manner wéi oder 2)

Test 1 -lt 2 && Echo "Jo" || Echo "nee"

(weist "Jo" op dem Écran, well 1 ass manner wéi oder 2)

Test 1-Nee 2 && Echo "Jo" || Echo "nee"

(weist "Jo" op den Écran, well 1 net gläich as 2)

Verglach mat Text

Wann Dir Elementer benotzt, déi als Zeechen parse vergläicht, kënnt Dir de folgende Vergleichtoperateur benotzen:

Beispiller:

Test "String1" = "String2" && Echo "Jo" || Echo "nee"

(weist "nee" op dem Écran, well "string1" net gläicht "string2")

Test "String1"! = "String2" && Echo "Jo" || Echo "nee"

(weist "yes" op den Écran, well "string1" net gläicht "string2")

Test -n "String1" && Echo "Jo" || Echo "nee"

(weist "Jo" op den Écran, well "string1" eng Stringlängt méi grouss ass wéi Null)

Test -z "String1" && Echo "Jo" || Echo "nee"

(weist "nee" op dem Écran, well "string1" eng Stringlänge méi grouss ass wéi Null)

Verglach vu Dateien

Wann Dir vergläicht Dateien ze verdeelen, kënnt Dir de folgende Vergleichtoperateur benotzen:

Beispiller:

Test / Wee / zu / file1 -n / Wee / zu / file2 && echo "jo"

(Wann file1 neier ass wéi file2 dann gëtt d'Wuert "jo" ugewisen)

Test -e / Wee / zu / file1 && echo "jo"

(wann file1 existéiert, gëtt d'Wuert "jo" ugewisen)

Test -O / Wee / zu / file1 && echo "jo"

(wann Dir eegent Datei1 gëtt da gëtt de Wuert "Jo" ugewisen) "

Terminologie

Verglach mat méi Konditiounen

Sou wäit war alles eent wat fir eng aner vergläicht, awer wat wann Dir zwee Konditiounen vergläicht.

Zum Beispill, wann e Béier huet 4 Been an ass "moo" ass et wahrscheinlech eng Kéi. Einfach Kontroll fir 4 Been sinn net garantéiert datt Dir eng Kéih hat, awer de Schall préift deen et sécher verlaangt.

Fir déi zwou Conditiounen unzefänken dës Äntwert ze benotzen:

Test 4 -eq 4 -a "moo" = "moo" && echo "et ass eng Kéi" || Echo "et ass net eng Kéi"

De Schlëssel hier ass d'-a wat fir en ass.

Et gëtt e bessere a méi heefeg gebraucht Wee fir dee selwechten Test ze maachen an dat ass wéi folgend:

Test 4 -eq 4 && Test "moo" = "moo" && echo "et ass eng Kéi" || Echo "et ass net eng Kéi"

En aneren Test, deen Dir maache wëllt, ass verknäppt zwee Aussoen a wann entweder e richtegt Uecht e String ass. Zum Beispill, wann Dir wëllt kontrolléieren datt eng Datei mam Numm "file1.txt" existéiert oder e Fichier "file1.doc" existéiert kënnt Dir de folgenden Kommando benotzen

test -e file1.txt -o -e file1.doc && echo "file1 existéiert" || Echo "file1 existéiert net"

De Schlëssel hei ass den -o dee steet fir oder.

Et gëtt e bessere a méi heefeg gebraucht Wee fir dee selwechten Test ze maachen an dat ass wéi folgend:

test -e file1.txt || test -e file1.doc && echo "file1 existéiert" || Echo "file1 existéiert net"

Eliminatioun vum Test Schlëssel

Dir musst eigentlech de Wuerttest benotze fir de Verglach ze maachen. Alles wat Dir maache musst, ass d'Erklärung an de klengen Klammern als folgend:

[-e file1.txt] && echo "file1 existéiert" || Echo "file1 existéiert net"

D'[an] ass grondsätzlaf fir de selwigen wéi den Test.

Elo weess Dir dëst, Dir kënnt verbesseren am Verglach vu verschidde Konditiounen wéi folgend:

[4 - qq 4] && ["moo" = "moo"] && echo "et ass eng Kéi" || Echo "et ass net eng Kéi"

[-e file1.txt] || [-e file1.doc] && echo "file1 existéiert" || Echo "file1 existéiert net"

Summary

Den Testbefehl ass méi nëtzlech an Scripten, well Dir de Wäert vun enger Variabele géint en aneren Kontrollprogramm ze fléien. Op der Standard Kommandozeilung kënnt Dir benotze fir ze testen ob eng Datei existéiert oder