Úvod do Bash skriptování
Alex Scriven
Data Scientist
Základní příkaz IF v Bashe má následující strukturu:
if [ CONDITION ]; then# SOME CODEelse # SOME OTHER CODEfi
Dva tipy:
];V příkazu IF lze provést základní porovnání řetězců:
x="Queen"if [ $x == "King" ]; thenecho "$x is a King!"else echo "$x is not a King!" fi
Queen is not a King!
Pro 'nerovná se' lze použít !=
Aritmetické příkazy IF mohou využívat strukturu s dvojitými závorkami:
x=10if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
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'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!
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:
Pro kombinování podmínek (AND) nebo použití operátoru OR slouží v Bashe tyto symboly:
&& pro AND|| pro ORV 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
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!
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í