V tomto tutoriálu o skriptování shellu bash v Linuxu se naučíme, jak porovnávat čísla, řetězce a soubory ve skriptu shell pomocí příkazu if. Porovnání ve skriptu jsou velmi užitečná a po výsledku porovnání skript provede příkazy a my musíme vědět, jak je můžeme využít ve svůj prospěch.
Syntaxe porovnání v shell skriptu
if [ podmínky/srovnání] then commandsfi
Příklad
pokud [2 -gt 3] vytiskněte „2 je větší“ jinak vytiskněte „2 není větší“fi
Toto byl jen jednoduchý příklad numerického srovnání a v našich skriptech můžeme použít složitější příkaz nebo podmínky. Nyní se pojďme naučit číselná srovnání trochu podrobněji.
Porovnání čísel ve skriptu Linux Shell
Jedná se o jednu z nejběžnějších metod hodnocení, tj. porovnávání dvou nebo více čísel. Nyní vytvoříme skript pro provádění numerického porovnávání, ale než to uděláme, musíme znát parametry, které se používají k porovnání číselných hodnot. Níže je uveden seznam parametrů používaných pro numerická porovnání
- číslo1 -ekv číslo2 zkontrolujte, zda se 1. číslo rovná 2. číslu
- číslo1 -ge číslo2 zkontroluje, zda je 1. číslo větší nebo rovno 2. číslu
- číslo1 -gt číslo2 zkontroluje, zda je 1. číslo větší než 2. číslo
- číslo1 -le číslo2 zkontroluje, zda je 1. číslo menší nebo rovno 2. číslu
- číslo1 -lt číslo2 zkontroluje, zda je 1. číslo menší než 2. číslo
- číslo1 -ne číslo2 zkontroluje, zda se 1. číslo nerovná druhému číslu
Nyní, když známe všechny parametry, které se používají pro numerická srovnání, pojďme je použít ve skriptu,
#!/bin/bash# Skript pro numerická porovnánívar1=10var2=20if [ $var2 -gt $var1 ] then echo "$var2 je větší než $var1"fi# Druhé porovnáníIf [ $var1 -gt 30] then echo "$var je větší než 30" else echo "$var1 je menší než 30"fi
Toto je postup pro numerické porovnávání, nyní přejděme k porovnávání řetězců.
Porovnání řetězců ve skriptu Linux Shell
Při vytváření bash skriptu můžeme být také požádáni o porovnání dvou nebo více řetězců a porovnávání řetězců může být trochu složité. Pro porovnávání řetězců se používají parametry
- var1 =var2 zkontroluje, zda je var1 shodná s řetězcem var2
- var1 !=var2 zkontroluje, zda var1 není totéž jako var2
- var1
- var1> var2 zkontroluje, zda je var1 větší než var2
- -n var1 zkontroluje, zda má var1 délku větší než nula
- -z var1 zkontroluje, zda má var1 délku nula
Poznámka :- Možná jste si všimli, že zde použitý symbol větší než (>) a menší než symbol (<) se také používají pro přesměrování pro stdin nebo stdout v Linuxu. To může být problém, když jsou tyto symboly použity v našich skriptech, takže co lze udělat pro vyřešení tohoto problému.
Řešení je jednoduché, při použití kteréhokoli z těchto symbolů ve skriptech by měly být použity se znakem escape, tj. použít jej jako „/>“ nebo „/<“.
Nyní vytvoříme skript provádějící porovnávání řetězců.
Ve skriptu budeme nejprve kontrolovat rovnost řetězců, tento skript zkontroluje, zda jsou uživatelské jméno a námi definované proměnné stejné a na základě toho poskytne výstup. Za druhé, uděláme více než nebo méně než srovnání. V těchto případech bude poslední abeceda, tj. z, nejvyšší a abeceda a bude při srovnání nejnižší. A velká písmena budou považována za menší než malá.
#!/bin/bash# Skript pro provedení rovnosti řetězců Comparename=linuxtechiif [ $USER =$name ] potom echo „Uživatel existuje“ jinak script to the string not found" fi "User not found" Zif [ $var1 \> $var2 ] potom echo "$var1 je větší" else echo "$var2 je větší"fi# "$o var3 je větší než" var3 je větší než var3 je větší var3 je větší var3 je větší echo "$var1 je větší"fi
Nyní vytvoříme další skript, který bude používat „-n “ a „-z ” s řetězci pro kontrolu, zda obsahují nějakou hodnotu
#!/bin/bash# Skript pro zjištění, zda má proměnná hodnotu nebo notvar1=" "var2=linuxtechiif [ -n $var1 ] then echo "řetězec není prázdný" ostatní "řetězec je zadán prázdný" ech /před>Zde jsme použili pouze parametr „-n“, ale můžeme také použít „-z “. Jediný rozdíl je v tom, že s „-z“ hledá řetězec s nulovou délkou, zatímco parametr „-n“ hledá hodnotu, která je větší než nula.
Porovnání souborů v Linux Shell Script
Toto může být nejdůležitější funkce srovnání a je pravděpodobně nejpoužívanější než jakékoli jiné srovnání. Parametry, které se používají pro porovnání souborů, jsou
- -d soubor zkontroluje, zda soubor existuje a zda je to adresář
- -e soubor zkontroluje, zda soubor v systému existuje
- -w file zkontroluje, zda soubor v systému existuje a zda do něj lze zapisovat
- -r soubor zkontroluje, zda soubor v systému existuje a zda je čitelný
- -s soubor zkontroluje, zda soubor v systému existuje a není prázdný
- -f soubor zkontroluje, zda soubor v systému existuje a zda se jedná o soubor
- -O soubor zkontroluje, zda soubor v systému existuje a zda jej vlastní aktuální uživatel
- -G soubor zkontroluje, zda soubor existuje a výchozí skupina je stejná jako aktuální uživatel
- -x soubor zkontroluje, zda soubor v systému existuje a zda je spustitelný
- soubor A -nt soubor B zkontroluje, zda je soubor A novější než soubor B
- soubor A -ot soubor B zkontroluje, zda je soubor A starší než soubor B
Zde je skript využívající porovnání souborů
#!/bin/bash# Skript pro kontrolu souboru Comparedir=/home/linuxtechiif [ -d $dir ] potom echo "$dir je adresář" cd jinak d jinak jinak jinak jinak fi
Podobně můžeme k porovnání souborů použít i další parametry v našich skriptech. Tím je náš tutoriál o tom, jak můžeme v bash skriptech používat porovnávání čísel, řetězců a souborů, dokončen. Pamatujte, že nejlepší způsob, jak se to naučit, je procvičovat si to sami.
Přečtěte si také :Jak vytvořit pevné a měkké (symlink) odkazy na systémech Linux