Testkommandoen kan bruges på Linux-kommandolinjen til at sammenligne et element mod en anden, men det er mere almindeligt anvendt i BASH-shell-scripts som en del af betingede udsagn som styrelogik og programflow.
Et grundlæggende eksempel
Du kan prøve disse kommandoer ved blot at åbne et terminalvindue.
test 1 -eq 2 && echo "yes" || ekko "nej"
Ovennævnte kommando kan opdeles som følger: I det væsentlige er kommandoen sammenlignet med 1 til 2, og hvis de matcher, udføres eko-ja-sætningen, der viser "ja", og hvis de ikke stemmer overens, udføres ekko-nej-sætningen, som viser "nej". Hvis du sammenligner elementer, der analyserer som tal, kan du bruge følgende sammenligningsoperatører: eksempler test 1 -eq 2 && echo "yes" || ekko "nej"
(viser "nej" til skærmen, fordi 1 ikke er lig med 2) test 1 -ge 2 && echo "ja" || ekko "nej"
(viser "nej" til skærmen, fordi 1 ikke er større eller lig med 2) test 1 -gt 2 && echo "ja" || ekko "nej"
(viser "nej" til skærmen, fordi 1 ikke er større end 2) test 1-2 & & ekko "ja" || ekko "nej"
(viser "ja" til skærmen, fordi 1 er mindre end eller lig med 2) test 1 -lt 2 && echo "yes" || ekko "nej"
(viser "ja" til skærmen, fordi 1 er mindre end eller lig med 2) test 1 -ne 2 && echo "ja" || ekko "nej"
(viser "ja" til skærmen, fordi 1 ikke svarer til 2) Hvis du sammenligner elementer, der analyserer som strenge, kan du bruge følgende sammenligningsoperatører: eksempler test "string1" = "string2" && echo "yes" || ekko "nej"
(viser "nej" til skærmen, fordi "string1" ikke svarer til "string2") test "string1"! = "string2" && echo "yes" || ekko "nej"
(viser "ja" til skærmen, fordi "streng1" ikke svarer til "string2") test -n "string1" && echo "yes" || ekko "nej"
(viser "ja" til skærmen, fordi "string1" har en strenglængde større end nul) test -z "string1" && echo "yes" || ekko "nej"
(viser "nej" til skærmen, fordi "string1" har en strenglængde større end nul) Hvis du sammenligner filer, kan du bruge følgende sammenligningsoperatører: eksempler test / path / to / file1 -nt / path / to / file2 && echo "ja"
(Hvis fil1 er nyere end fil2, vises ordet "ja") test -e / path / to / file1 && echo "ja"
(hvis fil1 eksisterer vises ordet "ja") test -O / path / to / file1 && echo "yes"
(hvis du ejer filen1 så vises ordet "ja")) Terminologi Hidtil har alt været at sammenligne en ting imod en anden, men hvad nu hvis du vil sammenligne to forhold? For eksempel, hvis et dyr har 4 ben og går "moo", er det nok en ko. Bare at kontrollere for 4 ben garanterer ikke, at du har en ko, men kontrollerer den lyd, det helt sikkert gør. For at teste begge betingelser på én gang skal du bruge følgende erklæring: test 4 -eq 4 -a "moo" = "moo" && echo "det er en ko" || ekko "det er ikke en ko"
Hoveddelen her er den -a som står for og . Der er en bedre og mere almindeligt anvendt måde at udføre den samme test på, og det er som følger: test 4-eq 4 && test "moo" = "moo" && echo "det er en ko" || ekko "det er ikke en ko"
En anden test, du måske vil lave, er at sammenligne to udsagn, og hvis det enten er sandt, skriv en streng. Hvis du f.eks. Vil kontrollere, at der findes en fil med navnet "file1.txt" eller en fil kaldet "file1.doc", kan du bruge følgende kommando: test -e file1.txt -o -e file1.doc && echo "file1 exists" || ekko "file1 eksisterer ikke"
Hoveddelen her er den, som står for eller . Der er en bedre og mere almindeligt anvendt måde at udføre den samme test på, og det er som følger: test -e file1.txt || test -e file1.doc && echo "file1 exists" || ekko "file1 eksisterer ikke" Du behøver faktisk ikke bruge ordtesten til at udføre sammenligningen. Alt du skal gøre er at vedhæfte erklæringen i firkantede parenteser som følger: -e file1.txt && echo "file1 exists" || ekko "file1 eksisterer ikke"
Og betyder stort set det samme som testen. Nu ved du dette, kan du forbedre ved at sammenligne flere betingelser som følger: 4-eq 4 && "moo" = "moo" && echo "det er en ko" || ekko "det er ikke en ko"-e file1.txt || -e file1.doc && echo "file1 exists" || ekko "file1 eksisterer ikke" Testkommandoen er mere nyttig i scripts, fordi du kan teste værdien af en variabel mod et andet og kontrolprogramflow. På standardkommandolinjen kan du bruge den til at teste om en fil eksisterer eller ej.
Sammenligning af tal
Sammenligning af tekst
Sammenligning af filer
Sammenligning af flere betingelser
Eliminering af test søgeord
Resumé