Kā izmantot pārbaudes nosacījumus Bash Script

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:

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:

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:

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:

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

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