Průvodce pro začátečníky BASH - Srovnání věcí

01 z 08

Průvodce pro začátečníky BASH - Srovnání věcí

BASH výuka - porovnání řetězců.

V předchozí části kurzu BASH jsme se zabývali podmíněnými tvrzeními .

Tento průvodce byl velmi dlouhý, ale skutečně jen ukázal, jak řídit tok logiky. Tato příručka ukazuje různé způsoby porovnání proměnných.

Výše uvedený obrázek ukazuje první příklad v tomto týdnu:

#! / bin / bash

name1 = "gary"
jméno2 = "bob"

pokud ["$ name1" = "$ name2"]
pak
echo "názvy odpovídají"
jiný
echo "jména neodpovídají"
fi


Ve výše uvedeném skriptu jsem definoval dvě proměnné nazvané jméno1 a jméno2 a přiřadila jim hodnoty "gary" a "bob". Protože jsou proměnné mezi uvozovkami, nazývají se řetězcovými proměnnými, které se stávají mnohem relevantnějšími, jak pokračuje tutoriál.

Veškerý skript dělá porovnávat hodnotu $ name1 a $ name2 a pokud se shodují s výstupním řetězcem "match names" a pokud nevystupují řetězec "názvy neodpovídají".

Uvozovky kolem proměnných $ name1 a $ name2 jsou důležité, protože pokud hodnota jedné z nich nebyla nastavena, skript bude stále fungovat.

Například pokud $ name1 nebyl nikdy nastaven, pak byste porovnávali "" s "bob". Bez uvozovek byste zůstali s = "bob", což zjevně selže.

Můžete také použít značku! = Pro definici, která se nerovná následujícím způsobem:

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

02 z 08

Průvodce pro začátečníky k BASH - Porovnání řetězců

BASH výuka - porovnání řetězců.

Ve výše uvedeném příkladu test porovnává stejné dva řetězce a ptá se otázka, zda gary přijde před bob v abecedě?

Je zřejmé, že odpověď je ne.

Skript představuje méně než operátor (<). Protože méně než operátor je také používán k přesměrování, musíte ho uniknout lomítkem (\), protože to znamená méně než proto, že ve výše uvedeném skriptu jsem porovnal "$ name1" \ <"$ name2".

Opak je menší než je zjevně větší než. Namísto použití \ .

Například

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

03 ze dne 08

Průvodce pro začátečníky k BASH - Porovnání řetězců

BASH výuka - porovnání řetězců.

Chcete-li otestovat, zda má proměnná hodnotu, můžete použít následující test:

pokud [-n $ name2]

Ve výše uvedeném skriptu jsem ověřil, zda je hodnota $ name2 daná hodnotou a pokud se neobjeví zpráva "Není bob, nikdy se neobjevil bob".

04 ze dne 08

Průvodce pro začátečníky k BASH - Porovnání řetězců

BASH výuka - porovnání řetězců.

Na minulém snímku jsme pokryli, zda byla proměnná nastavena, nebo ne. Někdy může být proměnná nastavena, ale nemusí mít hodnotu.

Například:

název1 = ""

Chcete-li otestovat, zda má proměnná hodnotu nebo ne (tj. Má nulovou délku), použijte -z následujícím způsobem:

pokud [-z $ název1]

Ve výše uvedeném skriptu jsem nastavil $ name1 na řetězec s nulovou délkou a poté jej porovnal pomocí příkazu -z. Pokud $ name1 má nulovou délku, zobrazí se zpráva "gary out for evening".

05 z 08

Průvodce pro začátečníky BASH - Porovnávání čísel

BASH výuka - porovnávání čísel.

Dosud všechna srovnání byla u řetězců. A co porovnávání čísel?

Výše uvedený skript ukazuje příklad porovnání dvou čísel:

#! / bin / bash

a = 4
b = 5

pokud [$ a = $ b]
pak
echo "4 = 5"
jiný
echo "4 není rovno 5"
fi

Chcete-li nastavit proměnnou jako číslo, jednoduše ji nastavte bez uvozovek. Potom můžete porovnat čísla se znaménkem rovnosti.

Preferuji však použít následující operátor pro porovnání dvou čísel:

Pokud [$ a -eq $ b]

06 z 08

Průvodce pro začátečníky BASH - Porovnávání čísel

BASH výuka - porovnávání čísel.

Pokud chcete porovnat, zda je číslo menší než jiné číslo, můžete použít méně než operátor (<). Stejně jako u řetězců musíte s lomítkem uniknout méně než operátor. (\ <).

Lepším způsobem porovnání čísel je místo toho použít následující zápis:

Například:

pokud [$ a -lt $ b]

pokud [$ a -le $ b]

pokud [$ a -ge $ b]

pokud [$ a -gt $ b]

07 z 08

Průvodce pro začátečníky BASH - Porovnávání čísel

BASH výuka - porovnávání čísel.

Konečně pro tuto příručku, chcete-li otestovat, zda jsou dvě čísla různá, můžete použít společně méně než operátory a větší než operátory (<>) nebo -ne takto:

pokud [$ a <> $ b]

pokud [$ a -ne $ b]

08 z 08

Průvodce pro začátečníky BASH - Srovnávací operátoři - Shrnutí

Pokud jste vynechali první tři části této příručky, najdete je kliknutím na následující odkazy:

V další části průvodce budu počítat s aritmetikou.