GNU/Linux >> Znalost Linux >  >> Linux

Jak porovnávat čísla a řetězce ve skriptu Linux Shell

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


Linux
  1. Jak předvánočně upravit váš linuxový terminál a Shell

  2. Jak definovat a používat funkce v Linux Shell Script

  3. Jak porovnávat řetězce ve skriptování Bash Shell

  1. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  2. Jak změnit Shell v Linuxu

  3. Jak zkontrolovat, zda skupina existuje, a přidat, pokud ne, v Linux Shell Script

  1. Jak spustit příkaz / skript Linux Shell na pozadí

  2. Jak porovnávat a slučovat textové soubory na Linuxu

  3. Jak porovnat a sloučit textové soubory v Linuxu (část 2)