De testopdracht kan op de Linux-opdrachtregel worden gebruikt om het ene element met het andere te vergelijken, maar het wordt vaker gebruikt in BASH-shellscripts als onderdeel van voorwaardelijke instructies die logica en programmastroom regelen.
Een eenvoudig voorbeeld
U kunt deze opdrachten gewoon proberen door een terminalvenster te openen.
test 1 -eq 2 && echo "yes" || echo "nee"
Het bovenstaande commando kan als volgt worden opgesplitst: In wezen vergelijkt het commando 1 tot 2 en als ze overeenkomen, wordt de echo "ja" -instructie uitgevoerd die "ja" weergeeft en als ze niet overeenkomen, wordt de echo "nee" -instructie uitgevoerd die "nee" toont. Als u elementen vergelijkt die als getallen worden geanalyseerd, kunt u de volgende vergelijkingsoperatoren gebruiken: Voorbeelden test 1 -eq 2 && echo "yes" || echo "nee"
(geeft "nee" weer op het scherm omdat 1 niet gelijk is aan 2) test 1 -ge 2 && echo "yes" || echo "nee"
(geeft "nee" weer op het scherm omdat 1 niet groter of gelijk is aan 2) test 1 -gt 2 && echo "ja" || echo "nee"
(geeft "nee" weer op het scherm omdat 1 niet groter is dan 2) test 1 -le 2 && echo "yes" || echo "nee"
(geeft "ja" weer op het scherm omdat 1 kleiner is dan of gelijk is aan 2) test 1 -lt 2 && echo "yes" || echo "nee"
(geeft "ja" weer op het scherm omdat 1 kleiner is dan of gelijk is aan 2) test 1 -ne 2 && echo "ja" || echo "nee"
(geeft "ja" weer op het scherm omdat 1 niet gelijk is aan 2) Als u elementen vergelijkt die worden geanalyseerd als tekenreeksen, kunt u de volgende vergelijkingsoperatoren gebruiken: Voorbeelden test "string1" = "string2" && echo "yes" || echo "nee"
(geeft "nee" weer op het scherm omdat "string1" niet gelijk is aan "string2") test "string1"! = "string2" && echo "yes" || echo "nee"
(geeft "ja" weer op het scherm omdat "string1" niet gelijk is aan "string2") test -n "string1" && echo "yes" || echo "nee"
(geeft "ja" weer op het scherm omdat "string1" een stringlengte groter dan nul heeft) test -z "string1" && echo "yes" || echo "nee"
(geeft "nee" weer op het scherm omdat "string1" een stringlengte groter dan nul heeft) Als u bestanden vergelijkt, kunt u de volgende vergelijkingsoperatoren gebruiken: Voorbeelden test / path / to / file1 -nt / path / to / file2 && echo "yes"
(Als bestand1 nieuwer is dan bestand2, wordt het woord "ja" weergegeven) test -e / path / to / file1 && echo "yes"
(als bestand1 bestaat, wordt het woord "ja" weergegeven) test -O / path / to / file1 && echo "yes"
(als u bestand1 bezit, wordt het woord "ja" weergegeven ") Terminologie Tot nu toe heeft alles het ene ding vergeleken met het andere, maar wat als je twee condities wilt vergelijken? Als een dier bijvoorbeeld 4 poten heeft en "moo" is, is het waarschijnlijk een koe. Gewoon 4 poten controleren is geen garantie voor het hebben van een koe, maar het controleren van het geluid maakt het zeker. Gebruik de volgende verklaring om beide condities tegelijk te testen: test 4 -eq 4 -a "moo" = "moo" && echo "het is een koe" || echo "het is geen koe"
Het belangrijkste onderdeel hier is de -a die staat voor en . Er is een betere en vaker gebruikte manier om dezelfde test uit te voeren en die is als volgt: test 4 -eq 4 && test "moo" = "moo" && echo "het is een koe" || echo "het is geen koe"
Een andere test die u misschien wilt doen is twee statements vergelijken en als een van beide waar is, geeft u een string af. Als u bijvoorbeeld wilt controleren of een bestand met de naam "file1.txt" bestaat of dat er een bestand met de naam "file1.doc" bestaat, kunt u de volgende opdracht gebruiken: test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "bestand1 bestaat niet"
Het belangrijkste onderdeel hier is de -o die voor staat of . Er is een betere en vaker gebruikte manier om dezelfde test uit te voeren en die is als volgt: test -e file1.txt || test -e file1.doc && echo "file1 exists" || echo "bestand1 bestaat niet" U hoeft de woordtest niet echt te gebruiken om de vergelijking uit te voeren. Het enige dat u hoeft te doen, is de verklaring als volgt tussen vierkante haken plaatsen: -e file1.txt && echo "file1 exists" || echo "bestand1 bestaat niet"
De en betekent in feite hetzelfde als een test. Nu u dit weet, kunt u het vergelijken van meerdere voorwaarden als volgt verbeteren: 4-eq 4 && "moo" = "moo" && echo "it is a cow" || echo "het is geen koe"-e file1.txt || -e file1.doc && echo "file1 exists" || echo "bestand1 bestaat niet" De testopdracht is nuttiger in scripts omdat u de waarde van de ene variabele ten opzichte van de andere kunt testen en de stroom van het besturingsprogramma kunt controleren. Op de standaardopdrachtregel kunt u deze gebruiken om te testen of een bestand bestaat of niet.
Nummers vergelijken
Tekst vergelijken
Bestanden vergelijken
Vergelijk meerdere condities
Het test-sleutelwoord elimineren
Samenvatting




