Polecenie testowe może być użyte w linii poleceń Linuksa do porównania jednego elementu z drugim, ale jest częściej używane w skryptach powłoki BASH jako część instrukcji warunkowych sterujących logiką i przepływem programu.
Podstawowy przykład
Możesz wypróbować te polecenia po prostu otwierając okno terminala.
test 1 -eq 2 && echo "yes" || echo "nie"
Powyższe polecenie można podzielić w następujący sposób: W istocie, polecenie porównuje 1 do 2 i jeśli się zgadzają, wykonywane jest wyrażenie "tak", które wyświetla "tak", a jeśli nie pasują, wykonywane jest wyrażenie "nie", które wyświetla "nie". Jeśli porównujesz elementy parsujące się jako liczby, możesz użyć następujących operatorów porównania: Przykłady test 1 -eq 2 && echo "yes" || echo "nie"
(wyświetla "nie" na ekranie, ponieważ 1 nie jest równy 2) test 1 -ge 2 && echo "yes" || echo "nie"
(wyświetla "nie" na ekranie, ponieważ 1 nie jest większe lub równe 2) test 1 -gt 2 && echo "yes" || echo "nie"
(wyświetla "nie" na ekranie, ponieważ 1 nie jest większe niż 2) test 1 -le 2 && echo "tak" || echo "nie"
(wyświetla "yes" na ekranie, ponieważ 1 jest mniejsze lub równe 2) test 1 -lt 2 && echo "yes" || echo "nie"
(wyświetla "yes" na ekranie, ponieważ 1 jest mniejsze lub równe 2) test 1 -ne 2 && echo "tak" || echo "nie"
(wyświetla "yes" na ekranie, ponieważ 1 nie jest równy 2) Jeśli porównujesz elementy, które są analizowane jako łańcuchy, możesz użyć następujących operatorów porównania: Przykłady test "string1" = "string2" && echo "yes" || echo "nie"
(wyświetla "nie" na ekranie, ponieważ "string1" nie jest równe "string2") test "string1"! = "string2" && echo "yes" || echo "nie"
(wyświetla "yes" na ekranie, ponieważ "string1" nie jest równe "string2") test -n "string1" && echo "yes" || echo "nie"
(wyświetla "yes" na ekranie, ponieważ "string1" ma długość łańcucha większą niż zero) test -z "string1" && echo "yes" || echo "nie"
(wyświetla "nie" na ekranie, ponieważ "string1" ma długość łańcucha większą niż zero) Jeśli porównujesz pliki, możesz użyć następujących operatorów porównania: Przykłady test / path / to / file1 -nt / path / to / file2 && echo "yes"
(Jeśli plik1 jest nowszy niż plik2, wyświetli się słowo "tak" test -e / path / to / file1 && echo "yes"
(jeśli plik1 istnieje, wyświetli się słowo "tak") test -O / path / to / file1 && echo "yes"
(jeśli jesteś właścicielem pliku1, wyświetla się słowo "tak") " Terminologia Jak dotąd wszystko porównywało jedną rzecz z drugą, ale co, jeśli chcesz porównać dwa warunki? Na przykład, jeśli zwierzę ma 4 nogi i idzie "moo", prawdopodobnie jest to krowa. Samo sprawdzenie 4 nóżek nie gwarantuje, że masz krowę, ale sprawdzenie dźwięku, który z pewnością robi. Aby przetestować oba warunki naraz, użyj następującej instrukcji: test 4 -eq 4 -a "moo" = "moo" && echo "to jest krowa" || echo "to nie jest krowa"
Kluczową częścią jest tutaj -a, co oznacza i . Istnieje lepszy i częściej stosowany sposób wykonywania tego samego testu, który jest następujący: test 4 -eq 4 && test "moo" = "moo" && echo "to krowa" || echo "to nie jest krowa"
Innym testem, który możesz chcieć dokonać, jest porównywanie dwóch instrukcji i jeśli jedna z nich jest prawdziwa, wypisz ciąg. Na przykład, jeśli chcesz sprawdzić, czy plik o nazwie "plik1.txt" istnieje lub plik o nazwie "plik1.doc" istnieje, możesz użyć następującego polecenia: test -e plik1.txt -o -e plik1.doc && echo "plik1 istnieje" || echo "plik1 nie istnieje"
Kluczową częścią jest tutaj -o, co oznacza lub . Istnieje lepszy i częściej stosowany sposób wykonywania tego samego testu, który jest następujący: test -e plik1.txt || test -e plik1.doc && echo "plik1 istnieje" || echo "plik1 nie istnieje" W rzeczywistości nie musisz używać słowa test, aby wykonać porównanie. Wszystko, co musisz zrobić, to zamknąć instrukcję w nawiasach kwadratowych w następujący sposób: -e plik1.txt && echo "plik1 istnieje" || echo "plik1 nie istnieje"
I w zasadzie oznacza to samo co test. Teraz wiesz, że możesz poprawić porównywanie wielu warunków w następujący sposób: 4 -eq 4 && "moo" = "moo" && echo "to jest krowa" || echo "to nie jest krowa"-e plik1.txt || -e plik1.doc && echo "plik1 istnieje" || echo "plik1 nie istnieje" Polecenie testowe jest bardziej przydatne w skryptach, ponieważ możesz przetestować wartość jednej zmiennej względem drugiej i sterować przepływem programu. W standardowym wierszu poleceń można go użyć do sprawdzenia, czy plik istnieje, czy nie.
Porównywanie liczb
Porównywanie tekstu
Porównywanie plików
Porównanie wielu warunków
Eliminacja testowego słowa kluczowego
streszczenie