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:
- Test - dat heescht datt Dir sidd iwwer e Verglach ze maachen
- 1 - dat éischt Element, deen Dir vergläicht
- -eq (Wéi vergläicht Dir, an dësem Fall, Dir testen, ob eng Nummer e gläich ass)
- 2 - de Element deen Dir am éischten Element vergläicht
- && - Führen déi folgend Ausso, wann d'Resultat richteg ass
- Echo "Jo" - de Kommando, fir ze lafen, wann de Verglach gëlt
- || - Fëllt d'folgend Ausso op d'Resultat falsch
- Echo "Neen" - de Kommando auszeschléissen, wann de Verglach geet falsch
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:
- -eq - Wierder 1 gläiche Wäert 2
- -ge - ass de Wäert 1 méi oder d'selwecht wéi 2
- -gt - ass Wäert 1 méi grouss wéi de Wäert 2
- -le - ass Wäert 1 manner oder wéi d'selwecht value 2
- -lt - ass Wäert 1 manner wéi Wäert 2
- -ne - net Wert 1 net gläichwäerteg 2
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:
- = - Hutt String 1 Match Sait 2
- ! = - ass String 1 ënnerschiddlech mat String 2
- -n - ass d'String Längt méi grouss wéi 0
- -z - ass d'String Länge 0
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:
- -ef - Fannt d'Fichier'en déi selwecht Apparat an Inode Zuelen (sinn se déi selwecht Datei)
- -nt - Ass d'éischt Datei méi wéi déi zweet Datei
- -ot - Ass déi éischt Datei ären wéi déi zweet Datei
- -b - D'Fichier existéiert an ass blockéiert besonnesch
- -c - D'Fichier existéiert an ass Charakter speziell
- -d - D'Datei gëtt an ass e Verzeichnis
- -e - D 'Datei existéiert
- -f - D'Fichier existéiert an eng regulär Datei
- -g - D 'Datei existéiert an huet déi spezifizéiert Gruppennummer
- -G - D'Fichier existéiert an Besëtzer vun der Grupp Benotzer
- -h - D 'Datei existéiert an ass e symbolesche Link
- -k - D'Fichier existéiert an huet säi Klebriggebitt gesat
- -L - Déi selwecht wéi -h
- -O- De Fichier existéiert Dir sidd de Besëtzer
- -p - D'Fichier existéiert an ass eng genannt Päif
- -r - D'Fichier existéiert an liest
- -s - D'Fichier existéiert an huet eng Gréisst vu méi wéi null
- -S - D'Fichier existéiert an ass en Socket
- -t - De Fichierdeskriptor gëtt op enger terminaler Linn opgemaach
- -u - D'Fichier existéiert an d'Set-User-Id Bit ass gespaart
- -w - D'Fichier existéiert an ass schrëftlech
- -x - D'Fichier existéiert an ausführbar ass
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
- Block speziell - D'Datei ass e Block-Apparat, dat heescht, datt Daten an Bléider vu Bytes geliest ginn. Dës sinn normalerweis Apparater Dateien wéi Festpläng.
- Charakter speziell - De Fichier gëtt direkt opgesat, wann Dir et schreift an ass allgemeng e Gerät wéi e seriellen Hafen
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