Testkommandot kan användas på Linux-kommandoraden för att jämföra ett element mot en annan, men det används vanligare i BASH-skalskript som en del av villkorliga uttalanden som styr logik och programflöde.
Ett grundläggande exempel
Du kan prova dessa kommandon genom att öppna ett terminalfönster.
test 1 -eq 2 && echo "yes" || eko "nej"
Ovanstående kommando kan brytas ned enligt följande: I huvudsak jämför kommandot 1 till 2 och om de matchar, exekveras ekot "ja" -satsen som visar "ja" och om de inte matchar exekveras eko-nej-satsen som visar "nej". Om du jämför element som parser som nummer kan du använda följande jämförelseoperatörer: exempel test 1 -eq 2 && echo "yes" || eko "nej"
(visar "nej" till skärmen eftersom 1 inte är lika med 2) test 1 -ge 2 && echo "yes" || eko "nej"
(visar "nej" till skärmen eftersom 1 inte är större eller lika med 2) test 1 -gt 2 && echo "yes" || eko "nej"
(visar "nej" till skärmen eftersom 1 inte är större än 2) test 1-2 & & echo "yes" || eko "nej"
(visar "ja" till skärmen eftersom 1 är mindre än eller lika med 2) test 1 -lt 2 && echo "yes" || eko "nej"
(visar "ja" till skärmen eftersom 1 är mindre än eller lika med 2) test 1 -ne 2 && echo "yes" || eko "nej"
(visar "ja" på skärmen eftersom 1 inte är lika med 2) Om du jämför element som tolkar som strängar kan du använda följande jämförelseoperatörer: exempel test "string1" = "string2" && echo "yes" || eko "nej"
(visar "nej" till skärmen eftersom "string1" inte är lika med "string2") test "string1"! = "string2" && echo "yes" || eko "nej"
(visar "ja" till skärmen eftersom "string1" inte är lika med "string2") test -n "string1" && echo "yes" || eko "nej"
(visar "ja" till skärmen eftersom "string1" har en stränglängd större än noll) test -z "string1" && echo "yes" || eko "nej"
(visar "nej" till skärmen eftersom "string1" har en stränglängd större än noll) Om du jämför filer kan du använda följande jämförelseoperatörer: exempel test / väg / till / file1 -nt / path / to / file2 && echo "yes"
(Om filen1 är nyare än filen2 kommer ordet "ja" att visas) test -e / path / to / file1 && echo "yes"
(om filen1 existerar kommer ordet "ja" att visas) test -O / path / to / file1 && echo "yes"
(om du äger filen1 visas ordet "ja") Terminologi Hittills har allt jämfört en sak mot en annan, men vad händer om du vill jämföra två villkor? Till exempel, om ett djur har 4 ben och går "moo", är det förmodligen en ko. Att bara kolla på 4 ben garanterar inte att du har en ko, men kontrollerar ljudet som det säkert gör. För att testa båda villkoren på en gång använd följande uttalande: test 4 -eq 4 -a "moo" = "moo" && echo "det är en ko" || eko "det är inte en ko"
Nyckeln här är den -a som står för och . Det finns ett bättre och vanligare sätt att utföra samma test och det är som följer: test 4-eq 4 && test "moo" = "moo" && echo "det är en ko" || eko "det är inte en ko"
Ett annat test du kanske vill göra är att jämföra två uttalanden och om det är sant, skriv ut en sträng. Om du till exempel vill kontrollera att en fil med namnet "file1.txt" finns eller en fil som heter "file1.doc", kan du använda följande kommando: test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 existerar inte"
Nyckeln här är den som står för eller . Det finns ett bättre och vanligare sätt att utföra samma test och det är som följer: test -e file1.txt || test -e file1.doc && echo "file1 exists" || echo "file1 existerar inte" Du behöver inte faktiskt använda ordtestet för att utföra jämförelsen. Allt du behöver göra är att bifoga uttalandet i kvadrat parentes enligt följande: -e file1.txt && echo "file1 exists" || echo "file1 existerar inte"
Och betyder i grunden detsamma som testet. Nu vet du det här du kan förbättra vid att jämföra flera villkor enligt följande: 4-eq 4 && "moo" = "moo" && echo "det är en ko" || eko "det är inte en ko"-e file1.txt || -e file1.doc && echo "file1 exists" || echo "file1 existerar inte" Testkommandot är mer användbart i skript eftersom du kan testa värdet av en variabel mot ett annat och kontrollprogramflöde. På standardkommandot kan du använda den för att testa om en fil finns eller inte.
Jämförande antal
Jämförelse av text
Jämförande filer
Jämförelse av flera villkor
Eliminering av testets sökord
Sammanfattning