Bash skriptování představuje populární a snadno dostupnou metodu programování pro počítače s operačním systémem Linux. Tyto jednoduché skriptové příklady vám umožní porozumět celému procesu a seznámí vás se základními principy Bash programování.
1. Zobrazení „Hello World“ v Bash
Příklad „Hello World“ je výborný start pro učení se jakéhokoliv programovacího jazyka a Bash není výjimkou.
Níže je uveden postup, jak zobrazit „Hello World“ s využitím Bash:
#!/bin/bash
Shebang (#!/bin/bash) je klíčový příkaz, protože shell ho využívá k určení způsobu spuštění skriptu. V tomto případě používá interpret Bash.
# Zobrazí text Hello World
echo "Hello World"
chmod +x hello_world.sh
./hello_world.sh
2. Vytvoření adresáře na základě uživatelského vstupu
Ze skriptů můžete spouštět jakýkoliv program, který byste běžně používali v příkazové řádce. Například můžete vytvořit nový adresář pomocí příkazu mkdir.
#!/bin/bash
echo "Zadejte název nového adresáře:"
read newdir
mkdir $newdir
3. Vytvoření adresáře pomocí argumentů příkazové řádky
Alternativně k interaktivnímu zadávání dat podporuje většina Linuxových příkazů argumenty. Argument lze zadat při spuštění programu, aby se ovlivnilo jeho chování.
Ve skriptu můžete použít $1 pro odkaz na speciální proměnnou, která obsahuje hodnotu prvního argumentu. $2 odkazuje na druhý argument a tak dále.
#!/bin/bash
mkdir $1
./arg_dir.sh Test
Možná vás zajímá, co se stane, když skript spustíte bez zadání argumentu. Vyzkoušejte to a sami uvidíte; měli byste obdržet chybovou zprávu, která začíná „usage: mkdir“:
Bez argumentů příkazové řádky bude hodnota $1 prázdná. Pokud skript volá mkdir bez argumentu, příkaz mkdir vrátí tuto chybu. Pro prevenci této chyby můžete sami ověřit stav a zobrazit uživatelsky přívětivější chybovou zprávu:
#!/bin/bash
if ["$1" = ""]; then
echo "Prosím, zadejte název nového adresáře jako první argument"
exit
fi
mkdir $1
Pokud spustíte tuto novou verzi skriptu a zapomenete zadat argument, zobrazí se zpráva:
4. Odstranění souboru pomocí funkce Bash
Pokud zjistíte, že opakujete stejný kód, zvažte zabalení tohoto kódu do funkce. Funkci pak můžete volat, kdykoliv bude potřeba.
Níže je uveden příklad funkce, která smaže zadaný soubor.
#!/bin/bash
del_file() {
echo "mazání $1"
rm $1
}
Poté můžete funkci zavolat a předat jí název souboru, který chcete smazat:
del_file test.txt
Po zavolání funkce se speciální proměnné $? přiřadí stav ukončení posledního spuštěného příkazu. Stav ukončení se hodí pro kontrolu chyb. V tomto příkladu lze testovat, zda příkaz rm proběhl úspěšně:
if [ $? -ne 0 ]; then
echo "Omlouvám se, soubor se nepodařilo smazat"
fi
5. Vytvoření základní kalkulačky pro aritmetické výpočty
Tento poslední příklad zobrazuje velmi základní kalkulačku. Po jejím spuštění zadáte dvě čísla a zvolíte aritmetickou operaci, která se s nimi provede.
Níže je kód pro soubor calc.sh:
#!/bin/bash
echo "Zadejte první číslo: "
read aecho "Zadejte druhé číslo: "
read b
echo "Zvolte aritmetickou operaci:"
echo "1. Sčítání"
echo "2. Odčítání"
echo "3. Násobení"
echo "4. Dělení"
read choice
case $choice in
1)
result=`echo $a + $b | bc`
;;2)
result=`echo $a - $b | bc`
;;3)
result=`echo $a \* $b | bc`
;;4)
result=`echo "scale=2; $a / $b" | bc`
;;
esacecho "Výsledek: $result"
Všimněte si použití case … esac, což je Bash ekvivalent příkazu switch z jiných jazyků. Umožňuje otestovat hodnotu (v tomto případě proměnnou volby) proti několika pevným hodnotám a spustit příslušný kód.
Tento skript používá pro výpočet každý zadaný příkaz bc.