C2110 Operační systém UNIX a základy programování 8. lekce -1C2110 Operační systém UNIX a základy programování Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kamenice 5, CZ-62500 Brno 8. lekce PS/2021 Prezenční forma výuky: Rev4 C2110 Operační systém UNIX a základy programování 8. lekce -2- Opakování ➢ Bash C2110 Operační systém UNIX a základy programování 8. lekce -3- Vstup/výstup Vstup • Argumenty skriptu • Dostupné ve speciálních proměnných (0, 1, 2, …, 9, #) • Příkaz read slouží ke čtení textu ze standardního vstupu a jeho uložení do proměnných. Výstup • Příkaz echo slouží k neformátovanému výpisu do standardního výstupního proudu. • Příkaz printf slouží k vypisování formátovaných textů a čísel do standardního výstupního proudu. printf [format] [hodnota1] [hodnota2] ... echo [volby] [retezec1] [retezec2] ... read A # celý řádek se uloží do proměnné A read A B # první slovo se uloží do proměnné A # zbytek řádku do proměnné B C2110 Operační systém UNIX a základy programování 8. lekce -4Aritmetické operace Možné zápisy: (( I = I + 1 )) (( I++ )) Aritmetická operace se získáním výsledku: echo "Hodnota I zvetsena o jedna : $(( I + 1 ))" Další informace: man bash hodnotu výsledku se vypíše do místa zápisu • Aritmetické operace s celými čísly lze vykonat v bloku (( ... )). • Znaky se v bloku interpretují jako názvy proměnných. Proto není nutné používat operátor $ pro získávání jejich hodnoty. • Hodnoty proměnných se interpretují jako celá čísla. Pokud konverze selže, tak se použije nulová hodnota. C2110 Operační systém UNIX a základy programování 8. lekce -5Blok rozhodování ano ne ? ano ne blok 1 blok 2 stav ? ano ne blok 1 změna inicializace Podmíněné vykonání bloku (podmínky) Cyklické vykonávání bloku (cykly) Typické použití bloku rozhodování počítadlo (proměnná) C2110 Operační systém UNIX a základy programování 8. lekce -6- Podmínky if prikaz1; then prikaz2 ... else prikaz3 ... fi if ! mkdir adresar 2> /dev/null; then echo "Nemohu vytvorit adresar!" exit 1 fi Logické výrazy: [[ cislo1 operator cislo2 ]] [[ operator retezec1 ]] Složitější logické výrazy: || logické nebo && logické a ! negace Je možné testovat návratovou hodnotu příkazu nebo výsledek logického výrazu. Příklad: [[ (I -ge 5) && (I –le 10) ]] C2110 Operační systém UNIX a základy programování 8. lekce -7Nová látka ➢ Bash C2110 Operační systém UNIX a základy programování 8. lekce -8- Obsah ➢ Hledání chyb • syntaktické a logické chyby, zvýrazňování syntaxe, statická analýza, ladění ➢ Cykly • while/until • vnořování