Sprievodca pre začiatočníkov na BASH - Porovnanie vecí

01 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie vecí

BASH výučba - Porovnanie reťazcov.

V predchádzajúcej časti tutoriálu BASH sme sa zaoberali podmienenými vyhláseniami .

Táto príručka bola veľmi dlhá, ale naozaj len ukázala, ako riadiť tok logiky. Táto príručka ukazuje rôzne spôsoby porovnávania premenných.

Vyššie uvedený obrázok ukazuje prvý príklad v tomto týždňovom sprievodcovi:

#! / Bin / bash

meno1 = "Gary"
meno2 = "Bob"

ak ["$ name1" = "$ name2"]
potom
echo "mená sa zhodujú"
inak
echo "názvy sa nezhodujú"
fi


Vo vyššie uvedenom skripte som definoval dve premenné s názvom name1 a name2 a priradil im hodnoty "gary" a "bob". Keďže premenné sa nachádzajú medzi uvozovkami, nazývajú sa reťazcové premenné, ktoré sa stávajú relevantnejšími, ak sa tréning stáva.

Celý skript robí porovnáva hodnotu $ name1 a $ name2 a ak sa zhodujú s výstupom reťazec "mená sa zhodujú" a ak nevystupujú reťazec "mená sa nezhodujú".

Úrovne okolo premenných $ name1 a $ name2 sú dôležité, pretože ak hodnota niektorej z nich nebola nastavená, skript bude stále fungovať.

Napríklad, ak $ name1 nebol nikdy nastavený, porovnával by ste "" s "bob". Bez úvodzoviek by ste zostali s = "bob", čo jednoznačne zlyhá.

Môžete tiež použiť značku! = Na definovanie, ktorá sa nerovná nasledujúcim spôsobom:

ak ["$ name1"! = "$ name2"]

02 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie reťazcov

BASH výučba - Porovnanie reťazcov.

Vo vyššie uvedenom príklade test porovnáva rovnaké dva reťazce a pýta sa na otázku, či gary príde pred bob v abecede?

Je zrejmé, že odpoveď nie je.

Skript predstavuje menej ako operátor (<). Keďže menej ako operátor sa používa aj na presmerovanie, musíte ho uniknúť lomkou (\), pretože to znamená menej, čo je dôvod, prečo som vo vyššie uvedenom skripte porovnal "$ name1" \ <"$ name2".

Opak menej ako je zrejme väčší ako. Namiesto používania \ .

Napríklad

ak ["$ name1" \> "$ name2"]

03 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie reťazcov

BASH výučba - Porovnanie reťazcov.

Ak chcete otestovať, či má premenná hodnotu, použite nasledujúci test:

ak [-n $ name2]

Vo vyššie uvedenom skripte som otestoval, či $ name2 dostal hodnotu a ak to nie je správa "Nie je bob, nikdy sa neobjavil bob".

04 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie reťazcov

BASH výučba - Porovnanie reťazcov.

Na minulom posúvaní sme zistili, či bola premenná nastavená alebo nie. Niekedy môže byť nastavená premenná, ale nemusí mať skutočnú hodnotu.

Napríklad:

name1 = ""

Ak chcete otestovať, či má premenná hodnotu alebo nie (tj má dĺžku nula), použite -z nasledovne:

ak [-z $ name1]

Vo vyššie uvedenom skripte som nastavil $ name1 na reťazec s nulovou dĺžkou a potom ho porovnal pomocou -z. Ak $ name1 má nulovú dĺžku, zobrazí sa správa "gary out for evening".

05 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie čísel

BASH výučba - porovnávanie čísel.

Tak doteraz všetky porovnania boli pre reťazce. A čo porovnávanie čísel?

Uvedený skript ukazuje príklad porovnávania dvoch čísel:

#! / Bin / bash

A = 4
b = 5

ak [$ a = $ b]
potom
echo "4 = 5"
inak
echo "4 sa nerovná 5"
fi

Ak chcete nastaviť premennú ako číslo, jednoducho ju nastavte bez úvodzoviek. Potom môžete porovnať čísla so znamienkom rovnosti.

Dávam však prednosť použitiu nasledujúceho operátora na porovnanie dvoch čísel:

Ak [$ a -eq $ b]

06 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie čísel

BASH výučba - porovnávanie čísel.

Ak chcete porovnať, či je číslo menšie ako iné číslo, môžete použiť menej ako operátora (<). Rovnako ako pri reťazcoch, musíte utiecť menej ako operátor s lomítkom. (\ <).

Lepším spôsobom porovnávania čísel je použiť namiesto toho nasledujúci záznam:

Napríklad:

ak [$ a -lt $ b]

ak [$ a -le $ b]

ak [$ a -ge $ b]

ak [$ a -gt $ b]

07 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie čísel

BASH výučba - porovnávanie čísel.

Nakoniec, pre túto príručku, ak chcete otestovať, či sú dve čísla odlišné, môžete použiť spoločne menej ako a viac ako operátorov (<>) alebo -ne nasledovne:

ak [$ a <> $ b]

ak [$ a -ne $ b]

08 z 08

Príručka pre začiatočníkov pre BASH - Operátorov porovnania - Zhrnutie

Ak ste vynechali prvé tri časti tejto príručky, nájdete ich kliknutím na nasledujúce odkazy:

V ďalšej časti príručky budem pokrývať aritmetiku.