Skip to main content

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

Anonim
01 z 08

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

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 / bashmeno1 = "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

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 <použite >.

Napríklad

ak "$ name1" > "$ name2" 03 z 08

Sprievodca pre začiatočníkov na BASH - 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

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 (t. J. 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

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

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

#! / Bin / bashA = 4b = 5ak $ a = $ bpotom 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

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:

  • Menej ako -lt
  • Menej alebo rovné -le
  • Väčšie ako -gt
  • Vyššia alebo rovná -ge

Napríklad:

ak $ a -lt $ bak $ a -le $ bak $ a -ge $ bak $ a -gt $ b 07 z 08

Sprievodca pre začiatočníkov na BASH - Porovnanie čí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 <> $ bak $ 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:

  • Ahoj svet
  • Vstupné parametre
  • Podmienky a premenné

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