Testa komandu var izmantot Linux komandrindā, lai salīdzinātu vienu elementu pret citu, bet tas visbiežāk tiek izmantots BASH čaulas skriptos kā daļa no nosacījuma paziņojumiem, kas kontrolē loģiku un programmu plūsmu.
Pamata piemērs
Jūs varat izmēģināt šīs komandas, vienkārši atverot termināla logu .
tests 1-eq 2 && echo "jā" || echo "no"
Iepriekš minēto komandu var sadalīt šādi:
- tests - tas nozīmē, ka jūs gatavojaties veikt salīdzinājumu
- 1 - pirmais elements, ko jūs salīdzināt
- -eq (kā jūs salīdzināt, šajā gadījumā jūs pārbaudāt, vai viens numurs ir vienāds ar citu)
- 2 - elementu, kurā jūs salīdzina pirmo elementu vēlreiz
- && - izpildiet šādu paziņojumu, ja rezultāts ir taisnība
- echo "yes" - komanda palaist, ja salīdzinājums atgriež patiess
- || - izpildiet šādu paziņojumu, ja rezultāts ir nepatiesa
- echo "no" - komandu palaist, ja salīdzinājums atgriež false
Būtībā komanda salīdzina 1 līdz 2, un tie atbilst echo "jā" paziņojums tiek izpildīts, kas parāda "jā", un ja tie neatbilst echo "nē" paziņojums tiek izpildīts, kas parāda "nē".
Numura salīdzināšana
Ja salīdzina elementus, kas parsē kā skaitļus, varat izmantot šādus salīdzināšanas operatorus:
- -eq - vai vērtība 1 ir vienāda vērtība 2
- -ge - ir vērtība 1, kas ir lielāka vai vienāda ar vērtību 2
- -gt - vērtība 1 ir lielāka par vērtību 2
- -le - ir vērtība 1, kas ir mazāka vai vienāda ar vērtību 2
- -lt - vērtība 1 ir mazāka par vērtību 2
- -ne - vērtība 1 nav vienāda vērtība 2
Piemēri:
tests 1-eq 2 && echo "jā" || echo "no"
(ekrānā parādās "nē", jo 1 nav vienāds ar 2)
tests 1-ej 2 un echo "jā" || echo "no"
(ekrānā parādās "nē", jo 1 nav lielāks vai vienāds ar 2)
tests 1-gt 2 && atbalss "jā" || echo "no"
(ekrānā parādās "nē", jo 1 nav lielāks par 2)
tests 1-lo 2 && atbalss "jā" || echo "no"
(ekrānā parādās "jā", jo 1 ir mazāks vai vienāds ar 2)
tests 1-lt 2 && atbalss "jā" || echo "no"
(ekrānā parādās "jā", jo 1 ir mazāks vai vienāds ar 2)
tests 1 -ne 2 && echo "jā" || echo "no"
(ekrānā parādās "jā", jo 1 nav vienādas 2)
Teksta salīdzinājums
Ja salīdzina elementus, kas parsē kā virknes, varat izmantot šādus salīdzināšanas operatorus:
- = - Vai 1. virknes atbilstības virkne 2
- ! = - ir 1. virkne, kas atšķiras no 2. virknes
- -n - virknes garums ir lielāks par 0
- -z - ir virknes garums 0
Piemēri:
tests "string1" = "string2" && echo "jā" || echo "no"
(ekrānā parādās "nē", jo "string1" nav vienāds ar "string2")
tests "string1"! = "string2" && echo "jā" || echo "no"
(ekrānā parādās "jā", jo "string1" nav vienāds ar "string2")
tests -n "string1" && echo "jā" || echo "no"
(ekrānā parādās "jā", jo "string1" virknes garums ir lielāks par nulli)
tests -z "string1" && echo "jā" || echo "no"
(ekrānā parādās "nē", jo "string1" garums ir lielāks par nulli)
Failu salīdzināšana
Ja salīdzina failus, varat izmantot šādus salīdzināšanas operatorus:
- -ef - Vai failiem ir tāda pati ierīce un inode numuri (vai tie ir viens un tas pats fails)
- -nt - Vai pirmais fails ir jaunāks par otro failu
- -ot - Vai pirmais fails ir vecāks par otro failu
- -b - Fails pastāv un ir bloks īpašs
- -c - Fails pastāv un ir īpašs raksturs
- -d - Fails pastāv un ir katalogs
- -e - fails pastāv
- -f - Fails pastāv un ir parasts fails
- -g - Fails pastāv un tam ir norādītais grupas numurs
- -G - lietotāja grupa ir eksistējusi un īpašnieks
- -h - fails pastāv un ir simboliska saite
- -k - Fails pastāv un tam ir piesaistīts bits
- -L - tāpat kā -h
- -O - fails ir, ka esat īpašnieks
- -p - Fails pastāv un ir nosaukta caurule
- -r - Fails pastāv un ir lasāms
- -s - Fails pastāv un tā lielums ir lielāks par nulli
- -S - fails pastāv un ir ligzda
- -t - Termiņā tiek atvērts failu deskriptors
- -u - Fails pastāv un tiek iestatīts iestatītā lietotāja ID bits
- -w - fails pastāv un ir rakstāms
- -x - Fails pastāv un ir izpildāms
Piemēri:
tests / path / to / file1 -n / path / to / file2 && echo "jā"
(Ja fails1 ir jaunāks par failu2, tad parādīsies vārds "jā")
tests -e / path / to / file1 && echo "jā"
(ja parādās fails1, tiks parādīts vārds "jā")
tests -O / path / to / file1 && echo "jā"
(ja jums pieder file1, tad tiek parādīts vārds "jā")
Terminoloģija
- Bloķēt īpašu - fails ir bloķēšanas ierīce, kas nozīmē, ka dati tiek lasīti bitu blokos. Tie parasti ir ierīces faili, piemēram, cietais disks.
- Rakstzīmju īpašs - fails tiek darbināts uzreiz, kad rakstāt uz to un parasti ir ierīce, piemēram, seriālais ports
Multiple nosacījumu salīdzināšana
Līdz šim viss ir salīdzinājis vienu lietu pret otru, bet, ja vēlaties salīdzināt divus nosacījumus.
Piemēram, ja dzīvniekam ir 4 kājas un iet "moo", tas, iespējams, ir govs. Vienkārši pārbaudot 4 kājas, negarantē, ka jums ir govs, bet, pārbaudot skaņu, ko tā noteikti dara.
Lai pārbaudītu abus nosacījumus uzreiz, izmantojiet šādu paziņojumu:
tests 4-eq 4 -a "moo" = "moo" && echo "tas ir govs" || echo "tas nav govs"
Galvenā daļa šeit ir -a, kas nozīmē un.
Ir labāks un biežāk izmantotais veids, kā veikt vienu un to pašu testu, un tas ir šāds:
tests 4-eq 4 && tests "moo" = "moo" && echo "tas ir govs" || echo "tas nav govs"
Vēl viens tests, ko jūs, iespējams, vēlēsities veikt, ir divu paziņojumu salīdzināšana, un, ja nu ir taisnība, izvada virkni. Piemēram, ja vēlaties pārbaudīt, vai pastāv fails ar nosaukumu "file1.txt" vai ja pastāv faila nosaukums "file1.doc", varat izmantot šādu komandu
tests -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 neeksistē"
Galvenā daļa šeit ir -o, kas nozīmē vai.
Ir labāks un biežāk izmantotais veids, kā veikt vienu un to pašu testu, un tas ir šāds:
tests -e file1.txt || tests-e file1.doc && echo "file1 exists" || echo "file1 neeksistē"
Pārbaudes atslēgas novēršana
Lai veiktu salīdzināšanu, jums patiešām nav nepieciešams izmantot vārdu pārbaudi. Viss, kas jums jādara, pievienojiet paziņojumu kvadrātiekavās šādi:
[-e file1.txt] && echo "file1 eksistē" || echo "file1 neeksistē"
[Un] būtībā nozīmē to pašu, kā testu.
Tagad jūs to zināt, jūs varat uzlabot, salīdzinot vairākus nosacījumus, šādi:
[4-eq 4] && ["moo" = "moo"] && echo "tā ir govs" || echo "tas nav govs"
[-e file1.txt] || [-e file1.doc] && echo "file1 eksistē" || echo "file1 neeksistē"
Kopsavilkums
Testa komanda ir vairāk noderīga skriptos, jo jūs varat pārbaudīt viena mainīgā vērtību pret citu un kontroles programmas plūsmu. Standarta komandrindā varat to izmantot, lai pārbaudītu, vai ir pieejams fails vai