Příkazy IF

Úvod do Bash skriptování

Alex Scriven

Data Scientist

Základní příkaz IF

Základní příkaz IF v Bashe má následující strukturu:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

Dva tipy:

  • Mezery mezi hranatými závorkami a podmíněnými prvky uvnitř (první řádek)
  • Středník za uzavírací závorkou ];
Úvod do Bash skriptování

Příkaz IF a řetězce

V příkazu IF lze provést základní porovnání řetězců:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

Pro 'nerovná se' lze použít !=

Úvod do Bash skriptování

Aritmetické příkazy IF (varianta 1)

Aritmetické příkazy IF mohou využívat strukturu s dvojitými závorkami:

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Úvod do Bash skriptování

Aritmetické příkazy IF (varianta 2)

Aritmetické příkazy IF mohou také používat hranaté závorky s aritmetickými příznaky místo (>, <, =, != atd.):

  • -eq pro 'rovná se'
  • -ne pro 'nerovná se'
  • -lt pro 'menší než'
  • -le pro 'menší nebo rovno'
  • -gt pro 'větší než'
  • -ge pro 'větší nebo rovno'
Úvod do Bash skriptování

Příklad aritmetického příkazu IF

Předchozí příklad přepíšeme pomocí notace s hranatými závorkami:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Úvod do Bash skriptování

Další podmínkové příznaky Bashe

Bash nabízí také různé příznaky pro práci se soubory:

  • -e pokud soubor existuje
  • -s pokud soubor existuje a má nenulovou velikost
  • -r pokud soubor existuje a je čitelný
  • -w pokud soubor existuje a je zapisovatelný

Další příznaky jsou dostupné zde:

Úvod do Bash skriptování

Operátory AND a OR v Bashe

 

Pro kombinování podmínek (AND) nebo použití operátoru OR slouží v Bashe tyto symboly:

  • && pro AND
  • || pro OR
Úvod do Bash skriptování

Více podmínek

V Bashe lze podmínky řetězit takto:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

Nebo použít notaci s dvojitými hranatými závorkami:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Úvod do Bash skriptování

IF a příkazy příkazové řádky

V podmínce lze přímo použít příkazy příkazové řádky – bez hranatých závorek.

Například, pokud soubor words.txt obsahuje 'Hello World!':

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Úvod do Bash skriptování

IF se shellem v shellu

Podmínku lze vyhodnotit také pomocí shellu v shellu.

Přepišme předchozí příklad – výsledek bude stejný.

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Úvod do Bash skriptování

Pojďme procvičovat!

Úvod do Bash skriptování

Preparing Video For Download...