23
ŘÍDÍCÍ STRUKTURY - PODMÍNKY Pokusíme se rozvětvit sktipt v Bashi SPŠ Teplice - 3.V

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Embed Size (px)

DESCRIPTION

ŘÍDÍCÍ STRUKTURY - PODMÍNKY. Pokusíme se rozvětvit sktipt v Bashi. ŘÍDÍCÍ STRUKTURY - PODMÍNKY. V této lekci budeme probírat podmínkové příkazy, tj. příkazy, které nám pomohou rozvětvit skript a provádět určité příkazy pouze při splnění určité podmínky. Patří sem : if….then for….in while - PowerPoint PPT Presentation

Citation preview

Page 1: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Pokusíme se rozvětvit sktipt v Bashi

Page 2: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

V této lekci budeme probírat podmínkové příkazy, tj. příkazy, které nám pomohou rozvětvit skript a provádět určité příkazy pouze při splnění určité podmínky.

Patří sem: • if….then• for….in• while• until• case• select

Page 3: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

if….then

syntaxe: if podmínka then

příkazy fi

Vývojový diagram

ifpodmínka

thenpříkazy

fi

True

False

Page 4: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Zadání příkladuNapište skript, který z příkazové řádky načte dvě slova a porovná, zda jsou či nejsou stejná

Pozn.: V příkladu použijeme příkaz test, který testuje splnění či nesplnění podmínky a read, který načítá obsah proměnné z promptu.

Pozn.: Uvozovky kolem $slovo1 jsou důležité pro případ, že by zadané slovo obsahovalo mezeru či zvláštní znak. Všimněte si, že se nedovíme nic v případě, že slova nesou stejná. Naštěstí má podmínka if…then variantu if….then….else

Page 5: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

if….then….else

syntaxe: if podmínka then

příkazyelse

příkazyfi

Vývojový diagram

Page 6: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Zadání příkladuRozšiřte předchozí skript o výstup pro případ, že se slova neshodují.

Pozn.: Příkaz test lze nahradit hranatými závorkami. Závorky musí být odděleny od testované podmínky mezerou.

Page 7: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Vnořená podmínkaif….then….elifsyntaxe: if podmínka

then příkazy

elif podmínka then

příkazyelse

příkazyfi

Vývojový diagram

ifpodmínka

thenpříkazy

fi

True False

elifpodmínka

thenpříkazy

elsepříkazy

True False

Page 8: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Zadání příkladuNapište skript, který porovná shodu tří slov zadaných z příkazové řádky.

Pozn.: Pro příkaz test či hranaté závorky budeme potřebovat logický operátor AND, syntaxi příkazu test si přečteme v man test. Zjistíme, že AND se zapisuje jako –a. Pozor, kolem logických operátorů musí být mezery, to platí i pro rovnost =.

Page 9: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Domácí úkolNapište skript, který po zadání jména a hesla (2 x pro ověření správnosti) přidá uživatele do systému

Řešení:

Page 10: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

for…injednoduchý cyklus

syntaxe: for index-seznamu in seznam-argumentů

do příkazy

doneVývojový diagram

Page 11: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Zadání příkladuNapište skript, který ze seznamu argumentů načte pět jmen a vypíše je v příkazové řádce.

Pozn.: Příkaz sleep už známe z minulých lekcí.

Page 12: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Varianty příkazu forPři této variantě budeme zadávat argumenty z příkazové řádky. Příklad spuštění skriptu s cyklem for s argumenty:./skript.sh arg1 arg2 arg3…syntaxe: for index-seznamu

do příkazy

done

Obdoba předchozího příkladu:

Page 13: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Domácí úkolNapište skript, který ze seznamu jmen vytvoří v systému odpovídající uživatele.

Řešení:

Page 14: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

whiledalší cyklusDokud je splněna podmínka, tj. dokud test-příkaz vrací hodnou True, budou se vykonávat příkazy v sekci do

syntaxe: while test-příkaz do

příkazy done

Vývojový diagram

Page 15: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Zadání příkladuNapište skript, který pomocí cyklu while, vypíše čísla od 0 do 9.

Pozn.: Pro vypracování příkladu budeme potřebovat možnost pracovat s aritmetickými operátory. V lekci, která bude následovat po ukončení lekcí o řídících strukturách si aritmetiku v Bashi probereme pořádně. teď se omezíme jen na následující:Aritmetický výraz má v Bashi dvě možnosti zápisu. $((výraz)) nebo $[výraz]. Celý takovýto zápis se vyčíslí a má stejný efekt, jako bychom napsali přímo výsledek výrazu. Zápis $((2+1)) je tedy ekvivalentní zápisu 3. Zápis ((cislo +=1)) zvýší hodnotu proměnné o 1.

Page 16: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

untildalší cyklusDokud není splněna podmínka, tj. dokud test-příkaz vrací hodnou False, budou se vykonávat příkazy v sekci do

syntaxe: until test-příkaz do

příkazy done

Vývojový diagram

Page 17: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Zadání příkladuNapište skript, pomocí kterého bude váš spolužák hádat křestní jméno někoho ze skupiny. Skript na závěr vypíše: „Uhodl jsi na x-tý pokus!“

Page 18: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

A ještě jedna rada na závěrCyklus while lze s výhodou využít i při načítání obsahu textového souboru po řádcích.

syntaxe: while read proměnná do

příkazy done < jmeno_souboru

Následující skript načítá řádky souboru soubor.txt a vypisuje je do příkazového řádku.

Page 19: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Domácí úkolNapište skript, který načte jména uživatelů ze souboru a vytvoří pro ně účty, jako heslo použijte jmeno007, např. uživatel karel bude mít heslo karel007.

Řešení:

Page 20: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

caseřídící struktura case je rozhodovací struktura s více možnostmi

syntaxe: case test-řetězec in možnost-1)

příkazy-1;;

možnost-2)příkazy-2;;

možnost-3)příkazy-3;;

… esac

Page 21: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

case

Vývojový diagram

Page 22: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

Zadání příkladuNapište skript, který vyhodnotí zda jste zapsali A, B nebo C.

Page 23: ŘÍDÍCÍ STRUKTURY - PODMÍNKY

SPŠ Teplice - 3.V

selectřídící struktura umožňuje výběr obsahu proměnné ze zobrazené nabídky a poté vykonání příkazů s touto proměnnou

syntaxe: select proměnná [in arg …]do příkazydone

PříkladNásledující příklad ukazuje, jak lze příkaz select využít. PS3 je systémová výzva, kterou používá struktura select pro vypsání zprávy uživateli. Vestavěný příkaz break lze použít i v jiných řídících strukturách. Ukončuje běh dané struktury.