01 z 08
Průvodce pro začátečníky BASH - Srovnání věcí
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ů
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ů
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ů
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
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 = 5pokud [$ 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
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:
- Méně než -lt
- Méně nebo rovné -le
- Větší než -gt
- Větší než nebo rovno -ge
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
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.