Bash Scripting
Bash script
- Sekvence příkazů, které interpret příkazu (Bash) postupně spouští
Hashbang
- Indikuje umíštění interpreta. Hlavička se doporučuje psát, není všek povinná
Proměnné
- V bashi neexistují datové typy
- S obsahem se vždy pracuje jako se stringem
Argumenty
- Argumenty jsou reprezentovány proměnnými $1, $2, $3 atd.
- Proměnná $0 schovává název spouštěného scriptu (třeba /home/ondra/script.sh)
Uložení výstupu programu do proměnné
- Anglicky command substitution
- Výstup se získává pro pozdější manipulaci
Podmíněné příkazy
- Podmíněné spuštění příkázu podle exit statusu předchozího příkazu
- Používáme logické operátory
&&
(exit status zero, příkaz prošel) a ||
(exit status non-zero, příkaz selhal)
Funkce
- Sada příkazu, kterou lze po dobu vykonávaní scriptu opakovaně volat
Indexovaná pole
- Pole jsou v postatě napamované prvky na klíče
- V případě indexovaných polí představují klíče tzv. indexy, což jsou přirozená čísla
Podmínky
- Podmínky využívají příkaz if
- if, elif, else
- Nesmíme zapomínat na klíčové slovo
then
Cykly
- Cykly umožňují opakované spouštění příkazu specifikovaných v těle cyklu
- Používáme for, while (dokud pravda) a until (dokud nepravda)
Subshells
- Subshells jsou oddělené instance v shell prostředí
- Jedná se v podstatě o otevření shell instance v rámci již existující shell instance (v našem případě bash)
Pokročilá práce s bashem
Souborové deskriptory
- Souborový deskriptor je klíč identifikující otevřený soubor nebo datový tok. Předává se jednotlivým procesům
- 0 představuje vstup (stdin), 1 normální výstup (stdout) a 2 chybový výstup (stderr)
- Se souborovými deskriptory lze manipulovat
Rozdíl mezi > a >>
- Operátor
>
přesměruje stdout a stderr do souboru, původní obsah je smazán - Operátor
>>
přesměruje stdout a stderr do souboru, původní obsah je zanechán
Pipes
- Pomocí pipes můžeme vzít výstup z jednoho programu a použit jej jako vstup k jinému programu
- Používáme svislou čáru
|
(pipe)