GNU/Linux >> Znalost Linux >  >> Linux

Bash If-Else prohlášení – vše, co potřebujete vědět o

Tento článek se zabývá základy skriptování v prostředí Bash a popisuje nejpoužívanější logické konstrukce včetně jednoduchého if prohlášení, jestliže prohlášení a elif prohlášení. Kromě toho se budeme zabývat správným způsobem porovnávání řetězců a čísel. Vylepšete své prostředí Linuxu za 5 minut!

Kdykoli jste zkušený správce systému nebo začínající uživatel Linuxu, stojí za to znát základy skriptování v shellu. Tato dovednost vám dává schopnost automatizovat opakovatelné úlohy v rámci jednoho nebo více serverů. Tyto úlohy obvykle zahrnují instalaci softwaru a konfiguraci jakýchkoli systémových služeb.

Příkaz If

pokud slouží jako základní jádro pro všechny programovací jazyky. Toto prohlášení pomáhá implementovat logiku rozhodování ve vašem programu nebo skriptu. Proto je důležité pochopit, jak používat různé if prohlášení.

Zde je základní syntaxe:

if [ condition ]
then
  COMMANDS
fi

Kde:

  • stav – je logický operátor if prohlášení.
  • PŘÍKAZY – příkazy, které se provádějí, když je podmínka pravda .
  • pokud tedy fi – jsou klíčová slova syntaxe.

Zde je seznam nejčastěji používaných operátorů testovacích podmínek:

Operátor Popis
! VÝRAZ Výraz je nepravdivý.
-n STRING Délka STRING je větší než nula.Text
-z STRING Délka STRING je nula (STRING, který je prázdný)
STRING1 =STRING2 STRING1 se rovná STRING2
STRING1 !=STRING2 STRING1 se nerovná STRING2
INTEGER1 -ekv INTEGER2 INTEGER1 se číselně rovná INTEGER2
INTEGER1 -gt INTEGER2 INTEGER1 je číselně větší než INTEGER2
INTEGER1 -lt INTEGER2 INTEGER1 je číselně menší než INTEGER2
-e SOUBOR SOUBOR existuje
-d SOUBOR FILE existuje a je to adresář
-s SOUBOR FILE existuje a jeho velikost je větší než nula (FILE není prázdný.
-w SOUBOR FILE existuje a oprávnění k zápisu je uděleno.
-x SOUBOR FILE existuje a oprávnění ke spuštění je uděleno.
-r SOUBOR FILE existuje a oprávnění ke čtení je uděleno.

Nejzajímavější je, že během provádění skriptu Bash je vše v [ ] prochází testem utility, která vrátí buď true nebo false . Pokud tedy zapomenete syntaxi operátoru, použijte jeho manuálovou stránku:

man test

Pojďme se podívat na nejjednodušší pokud příklad příkazu:

#!/bin/bash
var=2
if [ $var -eq 2 ]
then
  echo "var equals 2"
fi

Očekávaný výstup:

var equals 2

Ve výše uvedeném příkladu jsme nastavili proměnnou var hodnotu na 2 , pak jsme testovali, zda var hodnota se rovná (-eq2 a zprávu vytiskli.

V reálném životě obvykle používáme if příkazy v kombinaci s cyklovacími konstrukcemi Bash (cykly for, smyčky while, dokud smyčky). Zde je příklad použití if prohlášení s pro -smyčka:

#!/bin/bash
for var in 1 2 3 4 5
do
  if [ $var -eq 3 ]
  then
    echo "Value 3 found"
    break
  fi
  echo var=$var
done

Očekávaný výstup:

var=1
var=2
Value 3 found

V tomto příkladu procházíme seznam čísel z 1 do 5pro -loop a tisk hodnoty proměnné, kterou jsme právě zpracovali. Když je nalezena hodnota 3, přerušíme provádění skriptu.

Kromě výše uvedených příkladů můžete použít výsledek matematického výpočtu v if prohlášení:

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  fi
done

Ve výše uvedeném příkladu kontrolujeme sudá čísla v rozsahu mezi 110 .

Očekávaný výstup:

2 is even number
4 is even number
6 is even number
8 is even number
10 is even number

Nyní můžete zkontrolovat výstup příkazu Bash nebo výsledek provedení. Zkusme zkontrolovat, zda uživatel existuje v /etc/passwd soubor.

#!/bin/bash
user='root'
check_result=$( grep -ic "^$user" /etc/passwd )
if [ $check_result -eq 1 ]
then
  echo "$user user found"
fi

Ve výše uvedeném příkladu používáme grep příkaz pro vyhledávání v /etc/passwd soubor:

grep -ic "^$user" /etc/passwd

Kde:

  • -i – vyhledávání bez rozlišení velkých a malých písmen.
  • -c – vrátí počet nalezených řádků (0 – nic nenalezeno; 1 nebo více, když bylo něco nalezeno).
  • „^$user“ – vyhledejte řetězec, který začíná (^ ) z hodnoty $user proměnná.

Vše ostatní v příkladu by mělo být jasné.

Očekávaný výstup:

root user found

Dále zkontrolujeme, že /etc/passwd soubor existuje:

#!/bin/bash
file='/etc/passwd'
if [ -s $file ]
then
  echo "$file file found"
fi

Očekávaný výstup:

/etc/passwd file found

Prohlášení If-else

Po seznámení se základními if prohlášení, pojďme se podívat, jak používat Bash if-else prohlášení.

Zde je obecná syntaxe:

if [ condition ]
then
  TRUE_COMMANDS
else
  FALSE_COMMANDS
fi

Kde:

  • stav – je logický operátor if prohlášení.
  • TRUE_COMMANDS – příkazy, které se provádějí, pokud je podmínka pravdivá.
  • FALSE_COMMANDS – příkazy, které se provedou, pokud je podmínka nepravdivá.
  • if, then, else, fi – jsou klíčová slova syntaxe.

Abychom demonstrovali, jak to funguje, změňme jeden příklad, kde jsme detekovali sudá čísla. Nyní vytiskneme, které číslo je sudé a které liché:

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  else
    echo "$var is odd number"
  fi
done

Zde je očekávaný výstup:

1 is odd number
2 is even number
3 is odd number
4 is even number
5 is odd number
6 is even number
7 is odd number
8 is even number
9 is odd number
10 is even number

Prohlášení Elif

Co když teď potřebujeme během provádění skriptu zkontrolovat několik různých podmínek? To je také možné pomocí příkazu elif, což je zkratka „else if “.

Syntaxe vypadá takto:

if [ condition_1 ]
then
  CONDITION_1_COMMANDS
elif [ condition_2 ]
then
  CONDITION_2_COMMANDS
else
  ALL_OTHER_COMMANDS
fi

Kde:

  • condition_1 – je logická podmínka pro provedení CONDITION_1_COMMANDS .
  • CONDITION_1_COMMANDS – příkazy, které se provádějí, pokud je splněna podmínka_1 je pravda .
  • CONDITION_2_COMMANDS – příkazy, které se provedou, pokud je splněna podmínka_2 je pravda .
  • ALL_OTHER_COMMANDS – příkazy, které se provádějí při condition_1condition_2 jsou nepravdivé .
  • if, then, elif, else, fi – jsou klíčová slova syntaxe.

Podívejme se na následující příklad:

#/bin/bash

time=8
if [ $time -lt 10 ]
then
  echo "Good morning"
elif [ $time -lt 20 ]
then
  echo "Good day"
else
  echo "Good evening"
fi

V tomto příkladu nastavíme čas proměnná na 8 AM a vytiskl zprávu na základě časové hodnoty.

Očekávaný výstup:

Good morning

Vnoření příkazů if

Nyní, když se seznámíme se základy, můžeme toto téma dokončit tím, že se naučíme vnořovat příkazy if.

Zde je příklad:

#/bin/bash

value=5
if [ $value -lt 10 ]
then
  if [ $value -eq 5 ]
  then
    echo "Value equals 5"
  else
    echo "Value not equals 5"
  fi
else
  echo "value is greater than 10"
fi

Zde je očekávaný výstup:

Value equals 5

Booleovské operátory

Může být užitečné zkontrolovat několik podmínek v jednom pokud prohlášení. Můžete to udělat pomocí následujících booleovských operátorů:

  • && – logické AND.
  • || – logické NEBO.

Zde je rychlý příklad:

#!/bin/bash
username="andrei"
birthday="12/16"
today=$( date +"%m/%d")
if [ $USER = $username ] && [ $today = $birthday ]
then
  echo "Happy birthday\!"
fi

V tomto jednoduchém příkladu kontrolujeme, zda jsou pravdivé dvě podmínky:

  • Uživatelské jméno přihlášeného uživatele by se mělo rovnat andrei.
  • Dnes by mělo být 16. prosince.

Pokud jsou splněny obě podmínky, vytiskneme „Všechno nejlepší!“

Prohlášení případu

V některých situacích možná budete potřebovat více než 3 příkazy elif ke kontrole skriptu. V tomto případě je použití příkazu elif komplikované. Bash vám poskytuje lepší způsob řešení takových situací pomocí případu prohlášení.

Zde je syntaxe:

case VARIABLE in
  VALUE_1)
    COMMANDS_FOR_VALUE_1
    ;;
  VALUE_2)
    COMMANDS_FOR_VALUE_2
    ;;
  *)
    DEFAULT_COMMANDS
    ;;
esac

Kde:

  • VARIABILNÍ – proměnná, jejíž hodnota bude porovnána s VALUE_1 nebo VALUE_2 .
  • COMMANDS_FOR_VALUE_1 – příkazy, které se mají provést, když VARIABILNÍ hodnota se rovná VALUE_1 .
  • COMMANDS_FOR_VALUE_2 – příkazy, které se mají provést, když VARIABILNÍ hodnota se rovná VALUE_2 .
  • DEFAULT_COMMANDS – příkazy, které se mají provést, když VARIABILNÍ hodnota nebyla rovna jedné z horních podmínek.
  • případvesac – klíčová slova syntaxe.

Zde je velmi běžný vzor pro zpracování vstupu do skriptu a spuštění, zastavení nebo restartování služby na základě uživatele vstup:

#!/bin/bash

case $1 in
  start)
    echo "Starting the service"
    ;;
  stop)
    echo "Stopping the service"
    ;;
  restart)
    echo "Restarting the service"
    ;;
  *)
    echo "Unknown action"
    ;;
esac

V tomto příkladu kontrolujeme hodnotu speciální 1 $ Bash proměnná. Obsahuje první argument poskytnutý skriptu. Pokud například uložíte výše uvedený příklad do souboru service.sh a spusťte jej takto:

bash service.sh start

1 $ bude obsahovat jako hodnotu slovo „start“.

Zbytek je řešen logikou příkazu case.

Shrnutí

V tomto článku jsme se zabývali základy skriptování v prostředí Bash a popsali nejrozšířenější logické konstrukce včetně jednoduchého if prohlášení, jestliže prohlášení a elif prohlášení.

Doufáme, že vám tento článek byl užitečný. Pokud ano, prosím, pomozte nám to rozšířit do světa!


Linux
  1. Vše, co potřebujete vědět o MySQL

  2. Vše, co potřebujete vědět o MySQL

  3. Co je VPS hosting? Vše, co potřebujete vědět o virtuálních privátních serverech

  1. Jak používat Linux Time Command:Vše, co potřebujete vědět

  2. Vše, co potřebujete vědět o Ubuntu 13.04

  3. Co potřebují správci systému vědět o používání Bash

  1. Linuxová komprese souborů:Vše, co potřebujete vědět

  2. Oprávnění souborů Linux:Vše, co potřebujete vědět

  3. Co potřebujete vědět o IPv6